SQLite代码首先是反向属性

时间:2016-06-18 07:11:13

标签: c# entity-framework sqlite ef-code-first

我正在使用SQLite CodeFires EF 6.1.3。一切正常,但我想使用反向属性。

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

所以我想要做的是获取一个Page的实例,并在属性中获取所有密钥专用于此页面。所以说 - 像这样:

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

但'keys'变量始终为null。

我首先使用代码,然后使用SQLite代码第一个解决方案https://github.com/msallin/SQLiteCodeFirst

有人可以看一下如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你应该使用&#34;虚拟&#34;用于启用延迟加载的关键字,如下所示:

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

或者您可以使用&#34; include&#34;在linq查询。

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

有关详细信息,请参阅此link