抖音代运营合同陷阱,汕头网站关键词优化教程,界面设计模式读后感,企业网站建设目的是什么前言
EF 更新数据时#xff0c;通常情况下#xff0c;是更新全部字段的#xff0c;但实际业务中#xff0c;更新全部字段的情况其实很少#xff0c;一般都是修改其中某些字段#xff0c;所以为了实现这个目标#xff0c;很多程序员通常会这样作#xff1a;
先从数据库…
前言
EF 更新数据时通常情况下是更新全部字段的但实际业务中更新全部字段的情况其实很少一般都是修改其中某些字段所以为了实现这个目标很多程序员通常会这样作
先从数据库中查询出实体对象然后修改其中某些字段字段的值最后再把整个实体对象的数据重新保存到数据库。
这样做性能很低也不安全那些不需要修改的字段的数据有可能这个过程中受到破坏。
其实有更好的作法的本文抛砖引玉分享 2 个 .NET EF 6 只更新某些字段的更好的方法。
代码 方法1: 更新数据不更新一些字段留意注释 public void UpdateSomeField(int id)
{// 1. 先查询实体var user DbContent.t_user.Where(o o.id id).FirstOrDefault();// 2. 再修改字段的值user.name 周;user.age 1;// 3. age 属性不想修改标记其 IsModified 属性 false// ---- 设置容器空间某一个模型的某一个字段 不提交到数据库// ---- DbContent.Entry 是要更新到数据库的整个对象DbContent.Entryt_user(user).Property(age).IsModified false;// 4. 更新数据DbContent.SaveChanges();
}方法2: 直接添加模型更新留意注释 public void UpdateSomeField(int id)
{// 1. 直接创建对象修改到数据库 不用先查询t_user user new t_user(){id id,name 周,age1,};// 2. 将实体对象加入 EF 对象容器中 获取容器对象DbEntityEntryt_user entry DbContent.Entryt_user(user);// 3. 容器对象状态设置为 unchangedentry.State System.Data.EntityState.Unchanged;// 4. 设置被改变的属性 是否要提交到数据库的字段entry.Property(a a.name).IsModified true;entry.Property(a a.age).IsModified true;// 5. 更新数据DbContent.SaveChanges();
}总结
更新数据是实际业务中经常遇到的场景可以进一步封装以上的方法通过参数传递要修改或不修改的字段提高 EF 6 的性能。你有更好的方法吗欢迎分享讨论
往期精彩
分享一个 .NET EF 6 扩展 Where 的方法分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子不会使用 EF Core 的 Code First 模式来看看这篇文章手把手地教你EF Core 性能很差试试这 6 个小技巧如何在 EF Core 中使用乐观并发控制EF Core 在实际开发中如何分层 我是老杨一个奋斗在一线的资深研发老鸟让我们一起聊聊技术聊聊程序人生共同学习共同进步