2010-09-13 115 views
2

POCO问题,我有过唯一的主密钥ID类型唯一标识符,和孩子的关系,1对多,这里我把主ID柱,并追加唯一ID的SQLCE数据库也为每一行。现在我为我的域模型NOT STE使用POCO实体。虽然添加和修改实体的工作正常,但我现在很难删除,现在说个别子记录,当然,假设他们有自己的主键。只要我给删除列表,并通过每个实体迭代,而第一实体连接,第二我得到异常:实体框架4,SQLCE与删除

具有相同键的对象已经存在于ObjectStateManager。 ObjectStateManager不能使用同一个键跟踪多个对象。

我要指出,我第一次做任何添加和修改实体到数据库中,同时打开上下文...部署和调用另一个方法删除其中当然打开另一个方面,如果它成功结束处置。

这个异常的意义是什么,我没有得到什么?

回答

0

如果在对象图中有同一实体的两个不同实例,则会发生此异常。这种异常也发生在STE,但有一个解决方法。

基本上,你有两个实体(POCO),每个第三实体的关系。当您尝试将第一个实体与第二个实体相关联并尝试将其保存到实体上下文中时,两个实体都会有第三个实例,这就是错误所在。

解决方法:

之前,你让两个实体之间的关系,试图“合并”的任何相关实体一起。这样一来,实体上下文不需要决定哪个“公共实体”实例持续存在。

实施例:

A,(B1,B2),C是实体。

A - B1

Ç - B2

A - B1 - Visual C

在这种情况下,B1和B2都是乙实体,只是不同的实例(可能是由于通过不同的上下文对数据存储的不同调用)。当您想要关联A和C时,您必须选择放弃B2并将C链接到B1。