可以从实体框架ObjectStateManager中卸载实体吗?

时间:2011-02-02 12:51:05

标签: entity-framework self-tracking-entities

我正在使用实体框架和自我跟踪实体而不是WCF。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

在这种情况下,请尝试使用Detach的{​​{1}}方法。这是STE中的known issue - ObjectContext要求具有相同键的STE先前未加载到上下文中。