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

相關文章
相關標籤/搜索