2013-03-25 2 views
2

C# 콘솔 응용 프로그램에서 지연로드를 테스트하고 있습니다. 어떤 이유로 Lazy 로딩이 작동하지 않습니다.게으른 로딩 EntityFramework 5 (CodeFirst 포함)

LazyLoadingEnabledProxyCreationEnabled 컨텍스트의 속성을 확인했습니다. 구성. 그들은 사실입니다.

내 재산은 가상입니다.

다른 유사한 질문을 성공적으로 확인했습니다. 무슨 일이 일어날 지 모르겠습니다.

static void Main(string[] args) { 

    Models.DataContext dc = new Models.DataContext(); 

    Console.WriteLine("Context Lazy {0}. Proxy Creation {1} ", 
         dc.Configuration.LazyLoadingEnabled, 
         dc.Configuration.ProxyCreationEnabled); 

    var grp = dc.Groups.FirstOrDefault();  
    Console.WriteLine("GroupId {1}, AttrSet is null = {0}", 
         grp.AttrSet == null , grp.Id); 

    var grp2 = dc.Groups.Include("AttrSet").FirstOrDefault(); 
    Console.WriteLine("GroupId {1}, AttrSet is null = {0}", 
           grp2.AttrSet == null, grp2.Id); 
} 

class Group { 
    public System.Guid Id { get; set; } 
    public string Name { get; set; } 
    public virtual AttrSet AttrSet { get; set; } 
} 

class AttrSet { 
    public System.Guid Id { get; set; } 
    public string Name { get; set; } 
} 

이 실행의 출력은 다음과 같습니다 :

상황에 게으른 진정한

이것은 (네임 스페이스를 표시하지 단순화) 내 코드입니다. 프록시 생성 진정한

GROUPID의 186ebc8a-dec7-4302-9f84-5a575577baac, AttrSet는

진정한 = null 인

GROUPID의 186ebc8a-dec7-4302-9f84-5a575577baac, AttrSet가 null = 거짓

I는 로드 된 레코드가 올 바르고 데이터베이스에 적절한 AttrSet이 있는지 확인하십시오.

아이디어가 있으십니까?

업데이트 나는 어떤 일이 실제로 코드를보고 싶은 경우에 매우 간단한 테스트 프로젝트를 만들었습니다.

참조 : https://bitbucket.org/josea/eflazy (GIT : https://[email protected]/josea/eflazy.git).

+0

나는 아무 소용이없는 재생산을 시도했다. 어떤 EF 버전을 실행하고 있습니까? 또한, Include() 호출없이 쿼리 할 때 NULL에 대해 테스트하는 대신 속성에 액세스하여 null ref 예외가 발생하는지 확인하십시오. – Moho

+0

@Moho : 시도했지만 실패합니다. 소스 코드를 게시했습니다. 감사. – rufo

답변