【发布时间】:2012-07-31 13:37:55
【问题描述】:
我在一些类型A、B、C和X之间有如下关系:
A->B->X
|->C->X
|->X
现在假设我想向数据库中添加一个新的 A 并将其与 B、C 和 X 的现有实例相关联。
我正在做的是:
using (Context context = new Context())
{
context.As.Attach(A);
context.As.Add(A);
context.SaveChanges();
}
它似乎有效,但我不确定,因为 Attach 通常用于附加现有实例。
此替代方法不起作用:
using (Context context = new Context())
{
context.Bs.Attach(A.B);
context.Cs.Attach(A.C);
context.As.Add(A);
context.SaveChanges();
}
因为在这种情况下 X 被附加了两次(A.B.X 和 A.C.X)并且实体框架抛出异常:
System.InvalidOperationException:
An object with the same key already exists in the ObjectStateManager.
The ObjectStateManager cannot track multiple objects with the same key.
使用我的解决方案有意义还是有更好的方法来做到这一点?
【问题讨论】:
标签: c# sql-server entity-framework entity-framework-4