Entity Framework初始化時執行:

Configuration.AutoDetectChangesEnabled = false;

會將數據庫變為NotTrack模式,也就是不會自動同步对象与其属性的状态。

這時候如果將數據表中的某行數據修改,並執行SaveChanges(),會發現數據庫中的數據並沒有保存修改後值。

解決方法有以下幾種:

  1. 通過System.Data.Entity.Infrastructure.DbEntityEntry,然後直接修改數據行的狀態,此方法會將所有表中所有列數據全部update,不推薦
    System.Data.Entity.Infrastructure.DbEntityEntry entryObj = dbContext.Entry<TableName>(tableObj);
                                entryObj.State = System.Data.Entity.EntityState.Modified;
  2. 通過System.Data.Entity.Infrastructure.DbEntityEntry對象的Property方法取得字段,然後設置CurrentValue屬性
    System.Data.Entity.Infrastructure.DbEntityEntry entryObj = dbContext.Entry<TableName>(tableObj);
                                entryObj.Property(t => t.FieldName).CurrentValue = NewValue;
  3. 通過第三方EntityFramework.Utilities包,執行AttachAndModify方法後,針對修改字段執行Set方法
    dbContext.AttachAndModify(tableObj)
                               .Set(x => x.FieldName, NewValue);
  4. 通過第三方Z.EntityFramework.Plus包,執行Update的擴展方法【多用於批次修改數據】
    dbcontext.tableName
                        .Where(p => ....)
                        .Update(p => new TableName() { FieldName = NewValue });

相关文章:

  • 2021-06-25
  • 2021-12-04
  • 2021-11-10
  • 2022-03-08
  • 2022-12-23
  • 2022-12-23
  • 2022-02-04
  • 2022-12-23
猜你喜欢
  • 2022-01-18
  • 2022-12-23
  • 2021-08-24
  • 2021-09-04
  • 2022-01-07
  • 2022-12-23
  • 2021-08-01
相关资源
相似解决方案