2

我在 WCF 上使用带有自跟踪实体的实体框架。

我有 2 个实体,客户和 PriceMatrix 具有多对多关系(客户可以有许多历史价格矩阵,并且可以在一组客户之间共享一个矩阵)

客户端有一个单一的 PriceMatrix,它更新并发送回服务器。服务器需要检查此 PriceMatrix 是否在其他客户之间共享,然后再选择更新它,或者复制它并更新副本。

我遇到的问题是,因为我在附加更新的 PriceMatrix 之前加载了 PriceMatrix 以检查它,所以当我调用 ApplyChanges() 时出现以下错误。

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

如果我注释掉我的检查(因此不加载 PriceMatrix)一切正常。

我真正想做的是,在检查其状态后,卸载 PriceMatrix,然后附加我从客户端收到的更新的 PriceMatrix。

4

1 回答 1

2

在这种情况下,请尝试Detach使用ObjectContext. 这是STE 中的已知问题-AcceptChanges要求具有相同密钥的 STE 先前未加载到上下文中。

于 2011-02-02T13:11:23.207 回答