假设我们有一个具有如下节点结构的二叉树:
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
是否可以在不编写难以理解的代码的情况下进行这种类型的操作?