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

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

下面 是修改的方法async

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; } }

这样搞的话  若是有为空的 字段直接 报错了ide

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

而后 咱们 来 这样解决   spa

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

看代码吧blog

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; } }

 

                解决完瞬间 晴天了                         it

 

分享给你们              io

相关文章
相关标签/搜索