如何在数据库优先DbContext
(EF4.3.1& MVC3)中进行验证?
我这样做(是的,它是VB):
If ModelState.IsValid Then
db.SaveChanges()
但是SaveChanges
会抛出DbEntityValidationException
并显示以下消息:
一个或多个实体的验证失败。看到 'EntityValidationErrors'属性以获取更多详细信息。
我希望它能够使用适当的验证消息再次返回视图,但很明显我错过了一些东西,因为我不知道为什么它应该以这种方式工作!您可以期待Google提供帮助,但大多数示例似乎都是代码优先的。
这是数据库优先,因此已生成模型。我希望也会生成验证约束(至少是SQL Server中的NOT NULL之类的简单约束),但这似乎不起作用。
奇怪的是,有些领域正在按预期运作,而其他领域则没有。
例如,我在数据库中有一个不可为空的文本字段。它在EF设计器和生成的代码中看起来是不可为空的。但是当我提交它时,我得到异常,而不是返回突出显示字段的表单。
另一方面,我有一个不可为空的日期字段。在尝试更新数据库之前进行检查,然后再次显示该表单,并突出显示该字段以进行更正。