EF異常 對乙個或多個實體的驗證失敗

2022-02-11 13:51:09 字數 593 閱讀 6183

使用ef進行實體操作(儲存、更新等)時,有時可能引發異常:對乙個或多個實體的驗證失敗 。此異常是由於操作的資料與對映配置中的檢查約束衝突導致的。比如,乙個user表,定義name字段長度最大為10,如果儲存的實體類name字段長度為11,那麼則會丟擲此異常。

那麼如何找到具體沒有通過驗證的字段及其原因呢?這就是本文的目的。方法如下:

對引發異常的語句進行異常捕獲,會捕獲乙個dbentityvalidationexception異常,此異常有乙個entityvlidateerrors欄位,這是乙個集合,裡面是未通過驗證的字段及其原因資訊,檢視它的內容,如下圖,即可得到你想要的資訊。

網上有很多地方提供的解決方案是:關閉ef的實體檢查,這是掩耳盜鈴,沒有意義。

ef通過實體對映來定義實體和資料的關係,理論上來說,實體對映中定義的資料結構和約束等資訊和資料庫中的定義應該是相同的,如果乙個實體未能通過實體對映的檢查,那麼即使執行了插入或者更新資料的命令,也會導致sqlexception。退一步講,即使沒有導致sqlexception,這也不是一種很為危險的處理方式。

Linux下多個程序或執行緒同時對乙個檔案進行寫操作

linux下多個程序或執行緒同時對乙個檔案進行寫操作 linux下多個程序或執行緒同時對乙個檔案進行寫操作,如何解決衝突?使用flock 鎖定檔案或解除鎖定 簡單可行!先介紹一下flock函式吧 標頭檔案 include 定義函式 int flock int fd,int operation 函式說...

遷移乙個或多個完整的git倉庫

遷移倉庫 包括所有分支,tag等 一 遷移乙個git倉庫 把乙個git倉庫遷移到另外乙個git倉庫,含所有的分支,標籤,歷史記錄,日誌 git clone mirror cd git remote set url origin git push f origin二 批量遷移倉庫 move.s 件 b...

多個Activity同用乙個布局或控制項

我們當然不必在每個xml檔案中寫重複的 經過上網查資料,大概有兩種常用的方法 xml檔案中 以上 中就是包含其他layout檔案布局,這是在擁有相同布局的情況下。但如果該相同的部分包含控制項甚至監聽事件時,在xml檔案中新增就不能解決問題了。這時候可以自定義乙個布局,讓他繼承activity。然後擁...