當我更新我的SQL 2012數據庫通過EF 6.01 SaveChanges,字符串字段太長,我得到一個異常如預期。我想要做的是鑽入異常以查找有問題的表和列,因爲最內層的SqlException僅告訴我 -爲什麼EF 6.01不給我一個DbEntityValidationException異常?
字符串或二進制數據將被截斷。
但不是哪個列或表。我有像下面的代碼準備告訴我任何驗證錯誤,但不要得到這樣的例外。
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
}
}
}
我得到的異常嵌套爲包含含有這些的SQLEXCEPTION並且沒有一個UpdateException DbUpdateException具有任何列信息。爲什麼我沒有得到DbEntityValidationException?有沒有其他方法可以找到違規列?
在這種情況下,我知道哪個入口導致了問題,但想添加一些代碼,以便將來更容易地告訴我。在給予SQL之前是否有EF驗證條目?我將3個對象添加到上下文中,然後執行SaveChanges。 – Dave
@Dave你在用什麼方法?代碼優先?數據庫第一? –
Steven,我使用Model First,並有一個項目轉換爲Code First,因爲MSFT幾乎放棄了Model First。 – Dave