EF Core,对象无法引用其他对象

时间:2018-05-16 14:01:49

标签: c# entity-framework-core

我有一个像树一样的结构。这棵树有Nodes。我项目中的每个对象都能够链接到其中一个节点。但是,当我使用LINQ查询对象时,它无法返回引用的节点数据。

public async Task<NodeModel> FindByID(string pID, CancellationToken pCancellationToken)
{
    pCancellationToken.ThrowIfCancellationRequested();
    return await Context.Nodes.FirstOrDefaultAsync(m => m.ID == pID);
}

以上是我根据ID查询单个对象的上下文的方法。下面的照片显示其返回null

enter image description here

对于某些Clarity。 B是A.的孩子 当我像这样查询列表时

mContext.Nodes.ToList();

我查询能够链接节点吗?

这里发生了什么?

enter image description here

1 个答案:

答案 0 :(得分:3)

我认为这是因为你有懒惰的加载导航属性。

尝试更改您的查询

public async Task<NodeModel> FindByID(string pID, CancellationToken pCancellationToken)
{
        pCancellationToken.ThrowIfCancellationRequested();
        return await Context.Nodes.Include(m => m.Node).FirstOrDefaultAsync(m => m.ID == pID);

}

当您查询所有记录时,原因是,Entity Framework足够智能,知道它已经加载了该实体。因为在这种情况下您要查询完整数据集,所以节点已经加载。