下面 是修改的方法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