EntityFramework Code首先手动将关系设置为两列

时间:2013-08-27 12:30:38

标签: c# entity-framework ef-code-first

假设我们有一个具有如下节点结构的二叉树:

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

是否可以在不制作难以理解的代码的情况下进行此类操作?

0 个答案:

没有答案