나는 저장소 패턴과 SQL에 Linq를 사용하여 상당히 작은 asp.net MVC 애플리케이션을 개발했다. 이제 Entity Framework를 사용하여 동일한 데이터에 액세스하고 업데이트하려고합니다. 그러나 Entity Framework의 테이블 관계에 대한 구문이 올바른지 이해하는 데 문제가 있습니다.Entity Framework - 테이블 관계를 처리하는 방법?
사용자에 대한 데이터 행을 검색 중이며 사용자의 동의 한 비즈니스 (User 테이블에서 외래 키)를 검색하고 싶습니다.
foreach (Business business in user.BusinessReference)
{
var b = business;
ViewData["BusinessName"] = b.BusinessName;
}
내가이 권리에 대해 것인가 : 나는 비즈니스 테이블 데이터에 액세스하기 위해이 같은 일을해야 본 적이 예제에서
using (MyDatabaseEntities context = new MyDatabaseEntities())
{
User user = db.User.FirstOrDefault(u => u.Users.UserId == userId);
if (!user.BusinessReference.IsLoaded)
{
user.BusinessReference.Load();
}
return user;
}
: 지금은 이런 일을하고있는 중이 야 방법? 모든 조언을 크게 주시면 감사하겠습니다.
그래서 "포함"을 사용하면 여러 테이블이나 관계를 포함 할 수 없습니까? 예 : 사용자 user = db.User.Include ("Business"). 포함 ("UserRoles"). FirstOrDefault (u => u.UserId == userId); – Victor
Include는 Eager를로드하지 않을 수도 있습니다 (Include는 명령이 아닌 "힌트"/ 요청입니다). IsLoaded/Load 코드를 반드시 보관해야합니다. 또한 여러 Include를 스택화할 수 있습니다. –
그래서 Include를 사용하면 컨트롤러에서 다음과 같은 것을 사용할 수 있습니다 : user.Business.BusinessName.ToString(); 내 사용자 개체를로드 한 후 왜 IsLoaded/Load 코드를 사용해야합니까? 이 시나리오의 경우 – Victor