0

我與EF6使用,我的基地倉庫保存()看起來像這樣淨睿2 - EF核心錯誤處理保存更改

public void Save() 
     { 
      try 
      { 
       Context.SaveChanges(); 
      } 
      catch (DbEntityValidationException ex) 
      { 
       //Do Stuff 
      } 
      catch (Exception exception) 
      { 
       //Do stuff. 
       } 
       else 
       { 
        throw; 
       } 
      } 
     } 

DbEntityValidationException」是EF預期的錯誤,如果對象保存是無效的。現在我在一個新的.NET Core 2項目中,我需要知道EF Core中的Expected實體驗證錯誤類型是什麼。

+1

您是否想過看看拋出了什麼異常? – DavidG

+1

「例外」總是「意外」。如果你「期待」一些「特殊情況」(順便說一句,爲什麼你不阻止它?) - 這是你的應用程序特定的。 – Dmitry

+0

真搞笑.. hohoho ..更新了我的qn。 –

回答

6

通過Github問題來看,實體框架核心中沒有DbEntityValidationException等價物。有一個blog(從Github上的問題#9662鏈接),給出了自己執行驗證邏輯的代碼示例,包括這裏的完整性:

class MyContext : DbContext 
{ 
    public override int SaveChanges() 
    { 
     var entities = from e in ChangeTracker.Entries() 
         where e.State == EntityState.Added 
          || e.State == EntityState.Modified 
         select e.Entity; 
     foreach (var entity in entities) 
     { 
      var validationContext = new ValidationContext(entity); 
      Validator.ValidateObject(entity, validationContext); 
     } 

     return base.SaveChanges(); 
    } 
} 

Validator.ValidateObject將拋出一個ValidationException如果驗證失敗,您可以相應地處理。

如果遇到驗證屬性問題,鏈接問題中的信息會多一點。