传入一个实体 student(){id = 1,name = "测试" age = null,sex = null}

下面 是修改的方法

public async Task EditAsync(T model, bool IsSava = true)
{
_Db.Configuration.ValidateOnSaveEnabled = false; //关闭验证
_Db.Entry(model).State = EntityState.Modified; if (IsSava)
{
await _Db.SaveChangesAsync();
_Db.Configuration.ValidateOnSaveEnabled = true;
}
}

这样搞的话  如果有为空的 字段直接 报错了

搞了老半天   当时心情 一万个CNM

然后 我们 来 这样解决

使用反射 获取属性是否 为空的设置 IsModeifde = fase   不为空的设置   IsModefide = true;

看代码吧

public async Task EditAsync(T model, bool IsSava = true)
{
_Db.Configuration.ValidateOnSaveEnabled = false;
_Db.Entry(model).State = EntityState.Modified;
foreach (var item in model.GetType().GetProperties())
{
if (item.GetValue(model) != null)
{
_Db.Entry(model).Property(item.Name).IsModified = true;
}
else
{
_Db.Entry(model).Property(item.Name).IsModified = false;
}
}
if (IsSava)
{
await _Db.SaveChangesAsync();
_Db.Configuration.ValidateOnSaveEnabled = true;
}
}

                解决完瞬间 晴天了

分享给大家

EF部分字段修改 自动忽略为null字段的更多相关文章

  1. EF部分字段更新,忽略为null字段

    一般的更新代码是这样的 public T Update<T>(T entity) where T : ModelBase { var set = this.Set<T>(); ...

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

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

  3. sqlserver 自增字段修改为普通主键字段

    --增加备份字段alter Table tableName add columnNameBak bigint ; --将主键自增字段 赋值到备份字段update tableNameset column ...

  4. PowerDesigner16 修改表或表的字段Name的时候不让Code不自动跟着变

    在修改表或表的字段Name的时候不让Code不自动跟着变,设置如下: tools-> General   Options-> Dialog 去掉勾选 Name To Code mirror ...

  5. thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)

    thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...

  6. hive中为分区表增加字段需要注意默认不会修改已有分区的字段,导致查询时新增字段为null

    若向hive表添加字段,通常会使用下面这种语句 alter table default.testparquet add columns(c8 string); 但是对于分区表来说, 1. 若新建的分区 ...

  7. EF Core 数据变更自动审计设计

    EF Core 数据变更自动审计设计 Intro 有的时候我们需要知道每个数据表的变更记录以便做一些数据审计,数据恢复以及数据同步等之类的事情, EF 自带了对象追踪,使得我们可以很方便的做一些审计工 ...

  8. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态

    本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...

  9. 修改MYSQL 表中的字段属性

    1.登录数据库 >mysql -u root -p 数据库名称 2.查询所有数据表 >show tables; 3.查询表的字段信息 >desc 表名称; 4.1.修改某个表的字段类 ...

随机推荐

  1. 高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解

    Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.redis使用多路复用技术,可以处理并发的连接.非阻塞 ...

  2. 菜鸟requireJS教程---1、初识requirejs

    菜鸟requireJS教程---1.初识requirejs 一.总结 一句话总结: Using a modular script loader like RequireJS will improve ...

  3. 石川es6课程---1-2、ES6简介

    石川es6课程---1-2.ES6简介 一.总结 一句话总结: 从ECMAScript的历史发展来看,太顺了的时候总会遇到一挫折,比如ecma4 1.ECMAScript 和 JavaScript关系 ...

  4. linux 加多播协议(IGMP)

    可能你所用的内核编译时没有选中multicast的选项.   追问 感谢您的回复,但是我还是不太明白你说的multicast选项是什么意思.能更详细的说一下吗,谢谢.或者能直接用QQ或者MSN帮忙看看 ...

  5. leetcode-easy-listnode-237 Delete Node in a Linked List

    mycode # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # sel ...

  6. C# hook WndProc

    在当前窗口里重载WndProc,只能捕获到当前WinForm窗口的消息 protected override void WndProc(ref Message m) { if (m.Msg == WM ...

  7. form 组件如何扩展user的字段

    第一步 先将一个包引进来 第二步创建一个类加入你想要的字段

  8. CocoaPods 安装及使用(亲测有效)

    一.What is CocoaPods? CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It ...

  9. leetcode 82 删除排序列表中的重复元素II

    与83类似,不过需要注意去除连续的重复片段的情况,如2 2 3 3这种情况,以及[1,1]这种情况下最终的cur为NULL,因此不能再令cur=cur->next; /** * Definiti ...

  10. 浏览器端-W3School-HTML:HTML DOM Audio 对象

    ylbtech-浏览器端-W3School-HTML:HTML DOM Audio 对象 1.返回顶部 1. HTML DOM Audio 对象 Audio 对象 Audio 对象是 HTML5 中的 ...