我正在使用实体框架和自我跟踪实体而不是WCF。
我有2个实体,Customer和PriceMatrix具有多对多关系(客户可以拥有许多历史价格矩阵,矩阵可以在一组客户之间共享)
客户端有一个PriceMatrix,它会更新并发送回服务器。服务器需要检查此PriceMatrix是否在其他客户之间共享,然后再选择更新它,或复制它并更新副本。
我遇到的问题是因为我在加载更新的PriceMatrix之前加载了PriceMatrix来检查它我在调用ApplyChanges()时遇到以下错误。
“AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突。在调用AcceptChanges之前,请确保键值是唯一的。”
如果我注释掉我的支票(因此不加载PriceMatrix),一切正常。
我真正想做的是,在检查其状态后,卸载PriceMatrix,然后附上我从客户端收到的更新的PriceMatrix。
答案 0 :(得分:2)
在这种情况下,请尝试使用Detach
的{{1}}方法。这是STE中的known issue - ObjectContext
要求具有相同键的STE先前未加载到上下文中。