2016-06-18 15 views
0

私はSQLite CodeFires EF 6.1.3で作業しています。すべて正常に動作しますが、逆プロパティを使用します。キーSQLiteコードfirstとinverseプロパティ

public sealed class Page 
{ 
    .... 
    [InverseProperty("PageOfThisKey")] 
    public ICollection<Keys> KeysOfThisPage { get; set; } 
    ... 
} 

とクラス:

public sealed class Key 
{ 
    ... 
    public Int32 PageID { get; set; } 
    [ForeignKey("PageID")] 
    public Page PageOfThisKey { get; set; } 
    ... 
} 

だから私が行うことができるようにしたいものをページのインスタンスを取得し、これに専念し、すべてのキーを取得することです

は、私は2つのクラスを持っていますプロパティのページ。つまり、 - このように:

var db = ConnectionManager.GetContext(); 
var keys = db.Pages.First().KeysOfThisPage; 

しかし、 'keys'変数は常にnullです。

私は、最初のコードとSQ​​Liteのコードhttps://github.com/msallin/SQLiteCodeFirst

は、誰かが、それは可能であるが、これを解決する方法を見てみてくださいすることができ、第一の溶液を使用していますか?

答えて

1

あなたは、このように遅延読み込みを有効にするための「仮想」キーワードを使用する必要があります。

public class Page 
{ 
    .... 
    [InverseProperty("PageOfThisKey")] 
    public virtual ICollection<Keys> KeysOfThisPage { get; set; } 
    ... 
} 

public class Key 
{ 
    ... 
    public Int32 PageID { get; set; } 

    [ForeignKey("PageID")] 
    [InverseProperty("KeysOfThisPage")] 
    public virtual Page PageOfThisKey { get; set; } 
    ... 
} 

それとも、LINQクエリで「含める」使用することができます。仮想keyworkは文句を言わない密閉されたクラスで動作するので、密封されたとして、それがマークされてはならない -

var keys = db.Pages.Include("KeysOfThisPage").First().KeysOfThisPage; 

詳細については、:)このlink

+0

ありがとうほんの少しの注意を参照してください。 – Oleksii

+0

はい、あなたの答えは更新されました、ありがとうございます。 – Iraj

関連する問題