我从一个控制器方法中得到一个 DbEntityValidationException,该方法试图在IsVisible
它从数据库中检索到的实体上设置布尔值。它通过页面上复选框的更改来响应 AJAX 帖子。该代码曾经有效。
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();
我真的需要有人来解释这里发生了什么,以及我将来应该如何防止这种情况。
感谢您的洞察力,埃里克