EF部分字段修改 自动忽略为null字段
传入一个实体 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字段的更多相关文章
- EF部分字段更新,忽略为null字段
一般的更新代码是这样的 public T Update<T>(T entity) where T : ModelBase { var set = this.Set<T>(); ...
- c#使用 Newtonsoft.Json 将entity转json时,忽略为null的属性
c#使用 Newtonsoft.Json 将entity转json时,忽略为null的属性,直接在属性上加下面的特性 [JsonProperty(NullValueHandling=NullValue ...
- sqlserver 自增字段修改为普通主键字段
--增加备份字段alter Table tableName add columnNameBak bigint ; --将主键自增字段 赋值到备份字段update tableNameset column ...
- PowerDesigner16 修改表或表的字段Name的时候不让Code不自动跟着变
在修改表或表的字段Name的时候不让Code不自动跟着变,设置如下: tools-> General Options-> Dialog 去掉勾选 Name To Code mirror ...
- thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)
thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...
- hive中为分区表增加字段需要注意默认不会修改已有分区的字段,导致查询时新增字段为null
若向hive表添加字段,通常会使用下面这种语句 alter table default.testparquet add columns(c8 string); 但是对于分区表来说, 1. 若新建的分区 ...
- EF Core 数据变更自动审计设计
EF Core 数据变更自动审计设计 Intro 有的时候我们需要知道每个数据表的变更记录以便做一些数据审计,数据恢复以及数据同步等之类的事情, EF 自带了对象追踪,使得我们可以很方便的做一些审计工 ...
- EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...
- 修改MYSQL 表中的字段属性
1.登录数据库 >mysql -u root -p 数据库名称 2.查询所有数据表 >show tables; 3.查询表的字段信息 >desc 表名称; 4.1.修改某个表的字段类 ...
随机推荐
- docker top 和 docker exec ps 命令查看的PID区别
区别在于 docker top 查看到的 PID 属于宿主机的 PID.我们可以通过 宿主机执行 ps -ef 查看结果 也可以进去容器执行 top 和 ps查看结果
- 浏览器端-W3School-HTML:HTML DOM Base 对象
ylbtech-浏览器端-W3School-HTML:HTML DOM Base 对象 1.返回顶部 1. HTML DOM Base 对象 Base 对象 Base 对象代表 HTML 的 base ...
- git使用遇到的问题
1.我新建了一个django项目,然后又在git上新建了一个仓库,然后我在django的项目文件内,将git上的项目clone到这个文件内的时候 git clone https://gitee.com ...
- [Nova] Failed to get shared "write" lock Is another process using the image?
目录 文章目录 目录 问题 解决 问题 [root@overcloud-compute-0 ~]# /usr/bin/python2 -m oslo_concurrency.prlimit --as= ...
- enumerable 可枚举 属性
一个对象的可枚举属性会在for...in中被访问到 (或是类似的迭代方法, Object.keys() 如果一个属性不是可枚举的,循环会忽略这个属性 var obj = { key: 'val' }; ...
- When specified, "proxy" in package.json must be a string.
react项目在package.json中配置proxy之后,报错 $ npm run start > img@ start D:\xx\src\img > react-scripts s ...
- gitlab ssh 免密登录
打开本地git 使用 ssh-keygen 工具 输入命令 ssh-keygen -t rsa -C '你的邮箱账号' 接下来输入密码 确认密码 找到目录 找到公钥 在 gitlab 用户设置 ...
- js 数组去重方法总结
var arr = [1, 1, 'true', 'true', true, true, 15, 15, false, false, undefined, undefined, null, null, ...
- backbone.js 教程(1) View & Model & Collection
Backbone.js Overview 它由Jeremy Ashkenas开发,最初发行于2010-10-13 它是一个轻量的JavaScript类库,只依赖于underscore.js,非强制依赖 ...
- Spring(十)--Advisor顾问
Spring之Advisor顾问 1. 创建新的xml文件 advisor.xml <!--01. 配置目标对象 实际肯定是配置UserServiceImpl--> <bean i ...