我错过了什么? (具有相同标识的实体已存在于此实体集中。)

问题描述:

我在实体框架场景中使用DTO和转换器。我想更新一个实体。所以我把这种说法: An entity with the same identity already exists in this EntitySetdatabasecontext.Tablename(s).Attach(entityobj); 每当在这里得到的程序与此错误结束。我错过了什么? (具有相同标识的实体已存在于此实体集中。)

我觉得我可以通过说databasecontext.Tablename(s).Detach(entityobj); 来解决这个问题,然后再次调用Attach。但是程序在Attach语句上仍然失败。

我错过了什么?数据库上下文中的哪个方法调用域服务中的更新?

它看起来像你保持开放的背景下,而你所做的更改。

在你不需要的对象重新连接到上下文情况。

如果你打开一个背景下,获得从上下文对象,然后关闭背景下,做出一些改变的对象,然后打开一个新的上下文。在这种情况下,您需要将对象附加到上下文。

的问题是不明确的。您没有提到您的数据库上下文有多长时间,以及您何时将实体加载到上下文中。

但基于你的问题我想你已经加载的实体传递它的地方,如DTO,当返回DTO您使用的仍然是相同的背景。您将DTO转换为实体,并且您正在尝试再次附加= > BANG异常。同一实体不能放置在上下文中两次。尝试使用ObjectContext.ApplyCurrentValues(EF 4.0)或ApplyPropertyChanges(EF 1.0)。