我很确定这是一个延迟加载问题,但在阅读了延迟加载后,我仍然没有接近解决方案。我试过打开和关闭延迟加载没有成功。当我从数据库中提取节点时,父节点和子节点为空,即使数据库中存在此类对象。
我还添加了'IsReference = true'作为解决此问题的尝试。
我在一个点上创建了虚拟对象引用的数据成员,但是我遇到了代理的序列化问题。
DatabaseContext.cs
public class DatabaseContext : DbContext
{
public DatabaseContext() : base("DatabaseName")
{
Configuration.LazyLoadingEnabled = false;
}
public DbSet<Node> Nodes { get; set; }
}
Node.cs
[DataContract(IsReference = true)]
public partial class Node
{
[DataMember]
public long ID { get; private set; }
[DataMember]
public Node Parent { get; set; }
[DataMember]
public ICollection<Node> Children { get; set; }
}
答案 0 :(得分:2)
最简单的方法是在查询中使用.Include("Parent").Include("Children")
答案 1 :(得分:0)
我最终将我想要的包含作为参数(您可以使用实际类型或字符串)传递给方法,然后我循环包含,因为它们返回DbQuery对象并且实际上不查询数据库。感谢输入@moi_meme(+1)。
foreach (var include in includes)
{
query = query.Include(include);
}