博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF实体部分更新的问题
阅读量:5790 次
发布时间:2019-06-18

本文共 456 字,大约阅读时间需要 1 分钟。

之前遇到只更新部分的问题:如前端修改用户信息(不修改密码),传实体到后台,这个实体是没有密码,这样一来要更新的话,得先去数据库通过传过来的实体的ID读取这条记录,然后将改动的部分填到查出来的记录中,再更新回去。

逻辑是对的,但是用EF,会有个问题,查出来后是默认缓存在entity这个上下文(dbcontent)中的,所以直接更新会报错,于是我就想办法查询的时候不缓存到上下文中,Asnotracking,先记录下,迟点整理,单词乱拼的,这个解决问题了。

但是,这样一来又会出现效率的降低,本来已经缓存在上下文中的,同次请求,多次用到这个记录的时候,数据库读取一次就行了,现在就是每次都要重新读取。

今天,才发现,原来要避免之前这个错误很简单,数据查出来——缓存在上下文中——实体属性变更——更新上下文。完事儿,关键就是我们不是去更新实体了,而是更新这个上下文。dbContext.saveChange();

转载于:https://www.cnblogs.com/joeymary/p/5681070.html

你可能感兴趣的文章
JS prototype 属性
查看>>
HTTP库Axios
查看>>
gen already exists but is not a source folder. Convert to a source folder or rename it 的解决办法...
查看>>
20个Linux服务器性能调优技巧
查看>>
填坑记:Uncaught RangeError: Maximum call stack size exceeded
查看>>
SpringCloud之消息总线(Spring Cloud Bus)(八)
查看>>
【348天】每日项目总结系列086(2018.01.19)
查看>>
【294天】我爱刷题系列053(2017.11.26)
查看>>
可替换元素和非可替换元素
查看>>
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>
ChPlayer播放器的使用
查看>>
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>
探寻Interpolator源码,自定义插值器
查看>>
一致性哈希
查看>>