假设我们有一个具有如下节点结构的二叉树:
public class Node
{
public int NodeId { get; set; }
public virtual Node ParentNode {get; set; }
public virtual Node LeftChildNode {get; set; }
public virtual Node RightChildNode {get; set; }
}
使用Code First时,数据库中的Node表将显示列:
ParentNode_NodeId,
LeftChildNode_NodeId,
RightChildNode_NodeId
是否可以手动设置表没有ParentNode_NodeId列的关系,并且在代码中询问ParentNode(假设someNode.ParentNode)将被解释为
Select * from Node Where LeftChildNode_NodeId = someNode.NodeId or RightChildNode_NodeId = someNode.NodeId;
我需要它,因为我在数据库中保存的节点下出现错误,我试图在彼此之下添加多个节点。例如:
Node parentNode = dbContext.Node.Find(1);
parentNode.LeftChildNode = new Node();
parentNode.LeftChildNode.LeftChildNode = new Node();
dbContext.SaveChanges(); <---- here is problem because parentNode.LeftChildNode has no id
是否可以在不制作难以理解的代码的情况下进行此类操作?