在实体框架中将对象树附加到对象上下文
Posted
技术标签:
【中文标题】在实体框架中将对象树附加到对象上下文【英文标题】:Attaching an object tree to object context in Entity Framework 【发布时间】:2010-12-20 09:14:01 【问题描述】:我有一个具有以下三种类型的 EDM:Foo、Bar 和 Foob。 Foob 是 Foo 的子类。 Foo 有一组 Bar 实体。 Bar 有一个 Foo 实体的集合。我想向集合中添加一个新的 Foo 对象,以及它的 Bar 和关联的 Foob 对象。这样下面的代码就可以工作了:
Foo foo = new Foo()Name = "Foo";
using(var ctx = new EntityContext())
ctx.Foo.Attach(foo);
Bar bar = new Bar();
bar.Items.Add(new Foob()Name="Foob1";
bar.Items.Add(new Foob()Name="Foob2";
foo.Bars.Add(bar);
ctx.SaveChanges();
但是上面的代码给了我下面的异常:
System.Data.SqlClient.SqlException:无法在具有唯一索引的对象“dbo.tblFoo”中插入重复的键行。
【问题讨论】:
尝试在 'ctx.SaveChanges();' 之后附加,因为我建议在保存更改后 db 已创建 foo 对象 id(以防自动增量设置为 true)。跨度> 【参考方案1】:尝试在 SQL 探查器中检查为此执行的 sql 代码。可能是您忘记为 Foob 实体设置自动增量。
【讨论】:
以上是关于在实体框架中将对象树附加到对象上下文的主要内容,如果未能解决你的问题,请参考以下文章