EF Linq To Entities ObjectManager 已存在相同键无法再Attach的解决方案
2013-05-19 22:52
471 查看
之所以会有这个异常,八成是因为之前在同一个DbContext下已经将这个对象Attach到了Context里,即已经搜索过
而现在要操作的对象八成是new或clone出来的对象,拥有相同的主键值,但不是同一个对象实例。
要解决只有一个思路,就是当这个异常发生时,找到Context里那个同主键值的对象,然后强行更改这个对象的值为你要操作的那个,这样就行了。
所以代码如下,先找到那个同主键值的对象:
View Code
这样每次SaveChange就不用担心对象是不是已经被加载到Context中了
而现在要操作的对象八成是new或clone出来的对象,拥有相同的主键值,但不是同一个对象实例。
要解决只有一个思路,就是当这个异常发生时,找到Context里那个同主键值的对象,然后强行更改这个对象的值为你要操作的那个,这样就行了。
所以代码如下,先找到那个同主键值的对象:
public void Update<T>(T obj) where T : class { using (BE50Beta_AdminEntities1 context = new BE50Beta_AdminEntities1()) { try { context.Entry<T>(obj); } catch { //context.ChangeTracker.Entries<Patron>().ToList().Remove(GetEntityKeyNames(context, pE); context.Entry<T>(GetEntityKeyNames(context, obj)).CurrentValues.SetValues(obj); } } }
View Code
这样每次SaveChange就不用担心对象是不是已经被加载到Context中了
相关文章推荐
- EF ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
- 针对【ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。】的解决方案
- EF ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
- 调试Bug:ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
- EF ObjectStateManager无法跟踪具有相同键的多个对象
- MVC EF ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
- ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
- ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
- ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
- ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
- “ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。”解决方法
- objectstatemanager 中已存在具有同一键的对象。objectstatemanager 无法跟踪具有相同键的多个对象。
- 无法将类型“System.Nullable`1”强制转换为类型“System.Object”。LINQ to Entities 仅支持强制转换 EDM 基元或枚举类型。
- objectstatemanager 中已存在具有同一键的对象。objectstatemanager 无法跟踪具有相同键的多个对象。
- 在 LINQ to Entities 查询中无法构造实体或复杂类型
- Siebel异常:The Siebel Object Manager was unable to establish a network session with the Communications Session Manager.解决方案
- 在 LINQ to Entities 查询中无法构造实体或复杂类型
- LINQ to Entities 不识别方法“System.Guid Parse(System.String)”,因此该方法无法转换为存储表达式。
- Linq to EF 与Linq to Object 使用心得
- 赶[LINQ to Entities] 的时髦:LINQ to Entities 不识别方法,因此该方法无法转换为存储表达式。