zoukankan      html  css  js  c++  java
  • 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;
                }
            }

                    解决完瞬间 晴天了                         

    分享给大家              

    努力在努力 QQ:2456314589 希望 对你们有所帮助
  • 相关阅读:
    关于一个简单面试题(。net)
    写一个TT模板自动生成spring.net下面的配置文件。
    EF自动生成的(T4模板) 关联属性元数据修改
    关于面向切面编程的部分内容-错误处理机制
    memcache 安装
    Newtonsoft.Json工具类
    关于Memcache使用的工具类
    关于 Log4Net
    今天开始写博客
    OC 协议
  • 原文地址:https://www.cnblogs.com/-jth/p/11032070.html
Copyright © 2011-2022 走看看