【发布时间】:2011-07-05 20:46:46
【问题描述】:
我一直在寻找解决方案,但找不到好的信息。很多 EF 文档都已经过时了。这是我的问题。
如果我通过 ParentID 导航属性将孩子添加到父母,一切正常。
如果我通过“子项”列表将子项添加到父项,并且该子项已存在,则会出现以下异常:
DbUpdateException:无法确定 受抚养人的有效订购 操作。由于存在依赖关系 外键约束,模型 需求,或商店生成 价值观。
如果我通过 Children 列表将孩子添加到父母并且孩子是新的(也需要持久化),我会收到以下异常:
DbUpdateConcurrencyException:存储 更新、插入或删除语句 影响了意外的行数 (0)。实体可能已被修改 或自加载实体后删除。 刷新 ObjectStateManager 条目。
Node.cs
public class Node
{
public long ID { get; private set; }
public long? ParentID { get; set; }
public List<Node> Children { get; set; }
}
相关的 DbContext.cs
protected override void OnModelCreating(DbModelBuilder mb)
{
mb.Entity<Node>()
.HasMany(c => c.Children)
.WithOptional()
.HasForeignKey(c => c.ParentID);
}
【问题讨论】:
标签: c# entity-framework code-first