ORM을 사용할 때 나는 보통 데이터 소스를 쿼리하는 데 사용할 DataContext/ObjectContext 인스턴스를 반환하는 팩토리 메서드를 만듭니다. 나는 보통 공장들이 기본 컨텍스트 클래스를 반환하도록한다. 그래서 EF4의 경우 생성 된 "MyDBConext"인스턴스와 반대로 ObjectContext 유형 인스턴스를 반환합니다. 메소드 서명은 다음과 같은 :EF4 Eager ObjectContext 기본 인스턴스를 통해로드
ObjectContext CreateContext()
이 createContext의 방법은 거짓 LazyLoadingEnabled = 및 ProxyCreationEnabled = 거짓 옵션 인스턴스를 반환합니다. 엔터티 컬렉션에 액세스 할 때 ctx.CreateObjectSet()과 같은 것을 호출 할 것입니다. 여기서 T는 물론 엔터티 형식입니다.
나는 "MyDBConext"와 반대로 ObjectContext 유형 인스턴스를 사용할 때 열망하는로드가 작동하지 않는 것으로 나타났습니다.
User result = null;
using(ObjectContext ctx = ContextFactory.CreateContext()) {
ObjectSet<User> userSet = ctx.CreateObjectSet<User>();
//userSet.Include(x => x.Roles);
userSet.Include("Roles");
result = userSet.SingleOrDefault(exp);
}
return result;
그러나 예상대로
using(MyDBConext ctx = new MyDBConext()) {
작품처럼 뭔가 using 문을 변경. 하지만 왜? 기본 ObjectContext 인스턴스를 통해로드 할 수 있습니까? 여기