一般的更新代码是这样的

public T Update<T>(T entity) where T : ModelBase
{
var set = this.Set<T>();
set.Attach(entity);
this.Entry<T>(entity).State = EntityState.Modified;
this.SaveChanges();
return entity;
}

但是有时候有更新的时候,如果为null则不更新这字段,这个时候就会有问题了,这个时候用另一个方法。。

public T Update2<T>(T entity) where T : ModelBase
{
var set = this.Set<T>();
set.Attach(entity);
foreach (System.Reflection.PropertyInfo p in entity.GetType().GetProperties())
{
if (p.GetValue(entity) != null)
{
this.Entry<T>(entity).Property(p.Name).IsModified = true;
}
}
this.SaveChanges();
return entity;
}

  

EF部分字段更新,忽略为null字段的更多相关文章

  1. EF部分字段修改 自动忽略为null字段

    传入一个实体 student(){id = 1,name = "测试" age = null,sex = null} 下面 是修改的方法 public async Task Edi ...

  2. c#使用 Newtonsoft.Json 将entity转json时,忽略为null的属性

    c#使用 Newtonsoft.Json 将entity转json时,忽略为null的属性,直接在属性上加下面的特性 [JsonProperty(NullValueHandling=NullValue ...

  3. 【mybatis】mybatis 中update 更新操作,null字段不更新,有值才更新

    示例代码如下: <update id="updateGoodsConfigQuery" parameterType="com.pisen.cloud.luna.ms ...

  4. sql 一个表的字段更新至另一个字段的方法

    update Lc_Taxs set TaxMember = convert(int,Lc_Taxs2.TaxNo)  from Lc_Taxs a,(select * from Lc_Taxs ) ...

  5. JPA-save()方法会将字段更新为null的解决方法

    今天在开发上碰到一个问题,在做页面展示的时候传给前端十个字段,前端修改了其中3个的值,所以只传了3个值给后端,其余字段默认为null,更新后其他7个字段在全部变为了空值. 在前端没法全量回传所有属性的 ...

  6. 【EF】EntityFramework 更新数据库字段的三种方法

    实体类 public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public Tes ...

  7. EFCore+Mysql仓储层建设(分页、多字段排序、部分字段更新)

    前沿 园子里已有挺多博文介绍了EFCore+Mysql/MSSql如何进行使用,但实际开发不会把EF层放在Web层混合起来,需要多个项目配合结构清晰的进行分层工作,本文根据个人实践经验总结将各个项目进 ...

  8. 关于EntityFramework 更新数据记录时字段全部更新问题和不从数据库中获取直接更新记录

    一.一直对这个比较疑惑感觉只修改一条数据记录的一个字段结果更新Savechages后跟踪生成sql竟然是全部被修改,感觉微软怎么这么傻,总觉得会有其它方式可以只更新部分字段,但一直没有找到相关设置,最 ...

  9. 【MongoDB】递归获取字段更新表达式,更新复杂数据类型对象

    在实际更新Mongo对象时发现,原有的更新代码无法更新复杂的数据类型对象.恰好看到张占岭老师有对该方法做相关的改进,因此全抄了下来. 总的核心思想就是运用反射与递归,对对象属性一层一层挖掘下去,循环创 ...

随机推荐

  1. 读取CSV到DataTable

    using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using Sy ...

  2. [CF1132E]Knapsack【暴力搜索】

    你有一个容量为\(w\)的背包,和\(8\)件物品,重量分别为\(1~8\)的整数,分别有\(cnt_1 ... cnt_8\),求最大容量. 解法 笨蛋chh一开始打了一个背包模板乱搞压缩容量\(j ...

  3. [国家集训队]middle 解题报告

    [国家集训队]middle 主席树的想法感觉挺妙的,但是这题数据范围这么小,直接分块草过去不就好了吗 二分是要二分的,把\(<x\)置\(-1\),\(\ge x\)的置\(1\),于是我们需要 ...

  4. EEPROM

    EEPROM (Electrically Erasable Programmable read only memory),带电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片. EEPROM 可 ...

  5. thinkphp5 如何使用查询事件?

    它是对数据库的CURD操作事件进行了钩子,当事件触发时,会进行回调. 就像是注册事件和前置方法或后置方法类似 下面是demo <?php namespace app\index\controll ...

  6. 分页技术 -servlet

    一.思路: 定义四个分页变量. pagenow 表示第几页,该变量由用户决定的,是变化的. pageSize 每页显示几条记录,由程序定义,也可以由程序定制. pageCount 表示共有多少页,(该 ...

  7. go语言通道详解

    https://www.ardanlabs.com/blog/2017/10/the-behavior-of-channels.html Introduction When I started to ...

  8. 使用 Spring Cloud Stream 构建消息驱动微服务

    相关源码: spring cloud demo 微服务的目的: 松耦合 事件驱动的优势:高度解耦 Spring Cloud Stream 的几个概念 Spring Cloud Stream is a ...

  9. 阻止 form 回车 自动提交

    问题:当form表单中只有一个input时,在input中按回车键会自动提交. 解决方案: 1.form元素上加onsubmit="return false"(推荐) 2.多个in ...

  10. 全面理解虚拟DOM(1)

    最近一两年前端最火的技术莫过于 reactjs,angularJS,vuejs,即便你没用过也可能听过,像ReactJS由业界顶尖的互联网公司facebook提出,其本身有很多先进的设计思路,比如页面 ...