我正在使用的实体framwork场景的DTO和转换器。我想更新的实体。所以我把这种说法: databasecontext.Tablename(s).Attach(entityobj); 一旦进入这里这个错误的程序结束: An entity with the same identity already exists in this EntitySet

我觉得我可以说databasecontext.Tablename(s).Detach(entityobj);解决这个问题 我打电话之前再次安装。但该方案仍然未能在附加声明。

我在想什么?对DB上下文该方法在域服务调用Update?

有帮助吗?

解决方案

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

在这种情况下,就不需要对对象重新附加到上下文

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

其他提示

的问题是不明确的。你没有提到多久你的数据库环境的生活和你是什么时候加载实体的来龙去脉。

但基于你的问题我想你已经加载的实体传递的地方它作为DTO和当您使用还是一样的情况下返回的DTO。您转换DTO,将实体和你想它再附加=> BANG例外。同一实体不能被放置成两次上下文。尝试使用代替ObjectContext.ApplyCurrentValues(EF 4.0)或ApplyPropertyChanges(EF 1.0)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top