编译器错误~不能向ObjectStateManager添加相同的键-阿里云开发者社区

开发者社区> mcy247> 正文

编译器错误~不能向ObjectStateManager添加相同的键

简介:
+关注继续查看

产生这个问题的原因,其时是由我们的习惯引起的,一般说过,我们的update操作是这样的

1 从数据表把数据获出来

2 修改取出现的实体值

3 发回给数据表,更新成功

这看上去没有问题,但在EF环境中就会产生问题,因为当你取实体时,默认情况下EF会向ObjectStateManager提交一种跟踪机制,即向它里面添加了一个键值,

而当你调用update时,这时它已经有这个键值了,所有出现异常也很正常。

解决方法1:

不使用上面的逻辑,直接将实体附加到数据上下文中,这是可以的

解决方法2:

在获取单条实体时,取消实体跟踪,扩展方法是AsNoTracking(),这时不会向ObjectStateManager添加键值,在更新时,就不会出现这会异常了


呵呵,有时这些ORM框架给我们设了不少陷阱,然后等待我们自己去挖出这个陷阱,然后,自己再跳进去,这让我想起了苏轼的一首诗:

横看成岭侧成峰, 
远近高低各不同; 
不识庐山真面目, 

只缘身在此山中

本文转自博客园张占岭(仓储大叔)的博客,原文链接:编译器错误~不能向ObjectStateManager添加相同的键,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
flex 1119错误 找不到属性 static 解决方法,编译选项中选中 不启用rsl
flex 1119错误 找不到属性 static 解决方法,编译选项中选中 不启用rsl
392 0
关于代码的那些低级错误,都是血泪的教训
无论你是初级工程师,中级工程师,高级工程师,甚至是全栈工程师、架构师,都是从零开使一步一步走出来的,想必都会犯过一些低级错误。 那些错误都是怎么发生的,如何避免发生错误呢,看看我们各位资深的程序员以自身为例,告诫我们敬畏每一段代码
4888 0
MPAndroidChart的K线图上添加均线
MPAndroidChart的K线图上添加均线 效果图 均线计算方法: 通常说的5日均线,10日均线,其实就是根据当前K线节点的时间维度来说的,当前每个节点代表一天,那么上面...
845 0
+关注
mcy247
做自己的太阳 无需凭借谁的光
979
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载