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 希望 对你们有所帮助
  • 相关阅读:
    转 c#性能优化秘密
    转 the best for wcf client
    迁移到简书通知
    docker初体验
    PyQT 单词弹幕桌面生成!
    Python 常见排序查找算法-二分法,归并,冒泡,插入
    Python 将小姐姐画在Excel上
    TensorFlow基于神经网络实现井字棋
    TensorFlow(八) TensorFlow图像识别(KNN)
    TensorFlow(七) 地址匹配
  • 原文地址:https://www.cnblogs.com/-jth/p/11032070.html
Copyright © 2011-2022 走看看