我有一个像树一样的结构。这棵树有Nodes
。我项目中的每个对象都能够链接到其中一个节点。但是,当我使用LINQ查询对象时,它无法返回引用的节点数据。
public async Task<NodeModel> FindByID(string pID, CancellationToken pCancellationToken)
{
pCancellationToken.ThrowIfCancellationRequested();
return await Context.Nodes.FirstOrDefaultAsync(m => m.ID == pID);
}
以上是我根据ID
查询单个对象的上下文的方法。下面的照片显示其返回null
。
对于某些Clarity。 B是A.的孩子 当我像这样查询列表时
mContext.Nodes.ToList();
我查询能够链接节点吗?
这里发生了什么?
答案 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足够智能,知道它已经加载了该实体。因为在这种情况下您要查询完整数据集,所以节点已经加载。