簡體   English   中英

實體框架SaveChanges問題

[英]Entity framework SaveChanges problems

我對DbContext.SaveChanges();有一些問題DbContext.SaveChanges();

我的表CAR的表ENGINE具有FK(Engine屬性的屬性為[Required])。 我也用更新方法實現了通用存儲庫。

 class Repo<T> where T : IArchivable{
      ...
      public void update(T row){
          row.Deleted = true; //Deleted is from interface IArchivable
          ctx.SaveChange();
      }
      .....
      public T Single(System.Linq.Expressions.Expression<Func<T, bool>> condition){
          return ctx.Set<T>().where<T>(condition);
      }
 }

如果 :

      ....
      Repo<CAR> r = new Repo<CAR>();
      CAR car = r.Single(o => o.id == 1);
      r.update(car); 

我將收到錯誤“對一個或多個實體的驗證失敗。...”,我檢查了它,問題是ENGINE屬性是必需的,但對於

      ....
      Repo<CAR> r = new Repo<CAR>();
      CAR car = r.Single(o => o.id == 1);
      car.Engine = car.Engine;
      r.update(car); 

它會工作。

如何解決?

從導航屬性中刪除“ Required屬性,或關閉對數據層的驗證。

context.Configurations.ValidateOnSaveEnabled = false;

它在第二種情況下起作用的原因是您正在訪問Engine屬性,並且EF將使用延遲加載從數據庫中加載它,但是在第一種情況下,您的代碼無法訪問該屬性,並且EF中的內部行為不會觸發它以避免在保存操作期間發生意外的數據庫往返。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM