2017-05-23 14 views
0

私はローカルデータストレージ用のSQLiteデータベースを使用してWPFアプリケーションを開発しています。 NuGetから正しく構成されたApp.configファイルから、EntityFramework 6.1.3System.Data.SQLite 1.0.105.1をインストールしました。WPF、SQLite、Lazy Loading

これらは私のエンティティ

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を見ることができます無効である。

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()); 
} 

Entity Frameworkのロード関連企業:返信用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

関連する問題