我将 .net 应用程序作为我大学的一个项目,但我遇到了自跟踪实体集的问题。我正在选择一条记录,将其通过 wcf 服务传递,进行一些更改并再次将其传递给服务器。在那里我想比较更改的内容,所以我再次从上下文中选择相同的记录(这是具有旧值的记录)并进行比较。然后,在比较我想在上下文中调用 ApplyChanges 与通过服务传递的实体之后,我得到一个错误:
AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前确保键值是唯一的。
我想这是因为两次加载相同的实体(更改之前和更改之后进行比较)。有没有更好的方法来比较更改(我需要在另一个数据库表中创建更改历史记录)?如果两个客户端获得相同的记录,并且第一个客户端更改它并想要存储到数据库中,这个错误是否也会出现?我使用.net 4.0。