2016-06-18 32 views
0

我正在使用SQLite CodeFires EF 6.1.3。一切工作正常,但我想使用inverse屬性。SQLite代碼第一和反轉屬性

我有2類:

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; } 
    ... 
} 

所以我希望能夠做的是採取頁的實例,讓致力於此的所有鑰匙頁面。可以這麼說 - 像這樣:

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

但'鍵'變量始終爲空。

我使用代碼第一和SQLite代碼首先解決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查詢。

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

更多信息,請參閱本link

+0

謝謝:)只是一個小紙條 - 虛擬keywork不會與密封類工作,從而密封它不應該被標註。 – Oleksii

+0

是的,你說得對,回答更新,謝謝。 – Iraj