我從試圖設置布爾值IsVisible
的控制器方法中獲取DbEntityValidationException,它從它從數據庫中檢索到的實體。它通過頁面上的複選框更改來響應AJAX帖子。此代碼用於工作。DbEntityValidationException但數據有效 - 如何調試?
var targetClass = db.Classes.FirstOrDefault(x => x.ID == cid);
targetClass.IsVisible = true;
db.SaveChanges();
這導致DbEntityValidationException
與以下錯誤:
The SchoolYear field is required.
The TuitionPlan field is required.
當我通過這個代碼步驟都targetClass.SchoolYear
和targetClass.TuitionPlan
是有效的。
問題是,我該如何找出EF認爲這些字段丟失的原因?
編輯:這可能與(也)懶惰加載......如果我使用兩個「缺少」字段,錯誤消失。也許沒有什麼比不知道爲什麼一個嚴重的問題剛剛離開。
var targetClass = db.Classes.FirstOrDefault(x => x.ID == cid);
targetClass.IsVisible = value;
int x = targetClass.TuitionPlan.ID;
x = targetClass.SchoolYear.ID;
db.SaveChanges();
我真的需要有人解釋這裏發生了什麼,以及我將來如何防止這種情況發生。
感謝洞察力, 埃裏克
總之,我不應該在導航屬性上使用[必需的]註釋。那是對的嗎? –
正確。我不會推薦你這樣做。 – Pawel
缺少'[必須]'我如何刪除級聯? –