두 개의 클래스 (테이블 - 코드 첫 번째 mvc5 사용) 사용자를 얻으려고하면 사용자 회사에 EF6이 제공되지 않습니다. 왜 그럴까요?Entity Framework에서 연결 테이블을 가져 오지 못함
모델 :
public class TblUser
{
public int Id { get; set; }
public string UserName { get; set; }
public bool Gender { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public TblCompany TblCompany { get; set; }
}
public class TblCompany
{
public int Id { get; set; }
public string CompanyName { get; set; }
public string Email { get; set; }
public List<TblUser> TblUsers { get; set; }
}
상황 :
public class DBContext : DbContext
{
public DbSet<TblCompany> TblCompanies { get; set; }
public DbSet<TblUser> TblUsers { get; set; }
}
서비스 :
private DBContext db = new DBContext();
public TblUser GetUserById(int id, bool showHidden = false)
{
return db.TblUsers.FirstOrDefault(x => x.Id == id && (!x.isDeleted || showHidden));
}
작업 :
public class SupplierHomeController : Controller
{
// GET: Supplier/SupplierHome
public ActionResult Index()
{
UserService _srvUser = new UserService();
//User info will be come from Session in the future
//The User whose id is 1 is only for testing.
TblUser u = _srvUser.GetUserById(1);
//After that line, users's company is null! :(
//However there is a company linked to the user.
SupplierDashboardViewModel model = new SupplierDashboardViewModel();
model.TblUser = u;
return View(model);
}
}
데이터베이스에서 사용자를 얻으려고하면 회사 정보가 null로만 표시됩니다. 나 진짜 혼란 스럽다.
을 사용하여 달성이 LINK .Eager로드에 대한 자세한에 대한 열망 -로드를 읽어하시기 바랍니다에 대한 열망 로딩을 사용한다! 고맙습니다. 그러나 이전 프로젝트에서 나는 전체 Entity를 자동으로 가져올 수있었습니다. 이 프로 시저에서 '포함'을 사용해야하는 이유는 무엇입니까? –
@ Contat.Configuration.LazyLoadingEnabled = false;를 사용하여 컨텍스트 클래스에서 느린 로딩을 false로 설정 한 경우, 이전 프로젝트의 @ PolatFevziDündar가 좋을 수도 있습니다. – Curiousdev
Ok. 이제 이해가된다. 감사!! –