0

我有一些里面有 EntityCollection 的对象。如果我只是添加新实体,一切都会很好。在这里执行的代码:

Context.ApplyChanges()
Context.SaveChanges()

但是,如果我尝试更新实体,则会收到以下消息:

AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前确保键值是唯一的。

即使使用相同的集合对象。我的意思是集合中不可能有真正相同的实体对象,因为如果它们是新的,它们就会保存到数据库中。但!如果我尝试将相同的代码应用到单独的实体到集合中,它们会被保存,但如果我尝试将它应用到对象(容器)上,则会出现此错误。

谢谢您的帮助

4

2 回答 2

0

您是否尝试过从 中检索您希望更改的Context实体,适当地修改该实体,然后保存更改?如果是这样,你能提供一个更详细的例子吗?

于 2011-03-23T02:12:04.663 回答
0

我怀疑你已经从你的模型或表模式中省略了一些东西。如果预计模型主键是自动生成的,这就是我所期望的,但是您的表/模型代码没有以这种方式定义它。然后,您将集合中对象的所有主键设置为零,并且在尝试插入第二个对象时出现主键冲突。

于 2011-03-23T02:17:27.757 回答