2017-05-23 1 views
0

로컬 데이터 저장을위한 SQLite 데이터베이스가있는 WPF 앱을 만들고 있습니다. NuGet에서 적절하게 구성된 App.config 파일에서 EntityFramework 6.1.3System.Data.SQLite 1.0.105.1을 설치했습니다.WPF, SQLite 및 Lazy 로딩

이 나의 실체 나는 다음과 같은 코드를 실행하면

public class Event 
{ 
    public Guid Id { get; set; } = Guid.NewGuid(); 
    public DateTime Date { get; set; } 
    public string Description { get; set; } 

    public virtual Guid ContractId { get; set; } 
    public virtual Contract Contract { get; set; } 
} 

public class Contract 
{ 
    public Guid Id { get; set; } = Guid.NewGuid(); 

    [Required] 
    public string Code { get; set; } 

    public string Description { get; set; } 

    public virtual ICollection<Event> Events { get; set; } 
} 

, 나는이 System.NullReferenceException 예외가 있고, 나는 breakpoing를 넣으면, 내가 볼 수 계약E1 내 null

using (SqliteDbContext ctx = new SqliteDbContext()) 
{ 
    var e1 = ctx.Events.FirstOrDefault(); 

    MessageBox.Show(e1.Contract.Id.ToString()); 
} 

답변

0

봅니다 관련 개체를로드하는 열망로드를 사용 :

using (SqliteDbContext ctx = new SqliteDbContext()) 
{ 
    var e1 = ctx.Events.Include(x => x.Contract).FirstOrDefault(); 
    MessageBox.Show(e1.Contract.Id.ToString()); 
} 

엔티티 프레임 워크로드 관련 엔티티 : 답장을https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx

+0

감사합니다, 열망 로딩은 잘 작동하지만 내가 원하는 게으른 로딩을 사용하려면 ... – ssnake

+0

명시 적으로 사용 중지하지 않는 한 명백히 SQLite에서는 지원되지 않습니다. http://www.entityframeworktutorial.net/EntityFramework4.3/lazy-loading-with-dbcontext.aspx. 또한 EF7은 탐색 속성의 지연로드를 지원하지 않습니다. https://docs.microsoft.com/en-us/ef/core/querying/related-data 따라서 열망하는로드가 여기에있는 유일한 선택 일 것입니다. – mm8

+0

SQlite에서 지원되지 않습니까? 이 게시물에서 https://stackoverflow.com/questions/10458395/entity-framework-sqlite-and-lazy-loading SQLite가 지원하는 것 같습니다. – ssnake

관련 문제