2016-06-18 9 views
0

Ich arbeite mit SQLite CodeFires EF 6.1.3. Alles funktioniert gut, aber ich möchte die inverse Eigenschaft verwenden.SQLite-Code erste und inverse Eigenschaft

Ich habe 2 Klassen:

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

und Klasse Key:

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

Also, was ich zu tun in der Lage sein will, ist eine Instanz von Seite zu nehmen und alle Schlüssel zu diesem gewidmet bekommen Seite in der Eigenschaft. So zu sagen - wie folgt:

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

Aber "Schlüssel" Variable ist immer Null.

Ich verwende Code ersten und SQLite Code erste Lösung https://github.com/msallin/SQLiteCodeFirst

Kann jemand bitte werfen Sie einen Blick, wie ist es möglich, dieses Problem zu lösen?

Antwort

1

sollten Sie „virtuelles“ Schlüsselwort zu ermöglichen, verzögertes Laden wie diese:

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

Oder Sie können mit „include“ in Linq-Abfrage.

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

weitere Informationen finden Sie diese link

+0

Danke :) Nur eine kleine Anmerkung - virtuelle keywork gewohnt mit versiegelter Klasse arbeiten, so sollte es als versiegelt nicht markiert werden. – Oleksii

+0

Ja, Sie haben Recht, antworten aktualisiert, danke. – Iraj