林葛亭例外需要帮助处理对象使用相同的密钥
An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.
我有一个分离的实体,也有ObjectStateManager关键,这就是我不明白。这是可行的吗?
我试图做的是当客户端(Asp MVC控制器)返回时,将实体返回到上下文。
如果我这样做
db.MyEntity.Attach(myEntity);
我得到的第一个例外。
我知道它是分离的,因为当我尝试调用
db.MyEntity.Context.LoadProperty(myEntity, e => e.myProperty);
我得到EXCETION我的实体分离(这是应该的,为什么在ObjectStateManager的关键?)。
因此,总结一下,我认为我有在ObjectStateManager键和分离的实体。我如何附加它?我错过了什么?或者我误解了一些东西?
谢谢你的任何建议。
编辑: 作为@Ladislav Mrnka正确地说我的问题是我在一个请求处理中加载具有相同ID的实体。我这样做是因为我想要比较的实体的原始值,如果有问题我想要显示回给用户,但我需要附加它是问题,因为存在旧值的实体仍然存在于ObjectStateManager中。我附加这个实体,因为我也需要显示懒惰加载属性。什么是正确的方法来做到这一点?只是为实体做出新的查询?
您是否为每个请求处理创建新的上下文?你只打一次附件吗?你是否在相同的请求处理中加载了具有相同ID的实体? – 2011-03-02 12:54:38
我为每个请求创建新的上下文。我只附加一次,但你是正确的,我负载同一个ID相同的请求实体! (这可能是问题!) – Eduard 2011-03-02 12:58:54