我正在使用 Entity Framework,我想验证我的模型。
示例服务:
var user = _userRepository.GetUser(...);
var order = user.MakeOrder(); //<- this is some business logic in Rich Domain Model
_userRepository.Update(user);
_orderRepository.Add(order);
数据库操作可能会抛出 DbEntityValidationException
。我可以捕获它并做一些工作来向用户显示错误:
try
{
_userRepository.Update(user);
_orderRepository.Add(order);
}
catch(DbEntityValidationException ex)
{
var error = ex.EntityValidationErrors();
//Pass errors to Controller
}
但我知道,异常很慢。有没有什么方法可以毫无异常(exception)地做同样的事情(例如某种返回值)以获得更好的性能?
最佳答案
1) 您必须实现您的模型 IValidatableObject 接口(interface),然后在 Validate 方法中定义验证规则
2-) 使用 ModelState.IsValid 属性。不需要 try catch block
3-) 为页面元素添加验证消息 block
更多详情
http://weblogs.asp.net/scottgu/class-level-model-validation-with-ef-code-first-and-asp-net-mvc-3
额外的
您可以使用流畅的验证 https://fluentvalidation.codeplex.com/wikipage?title=mvc
基本示例 http://www.jerriepelser.com/blog/using-fluent-validation-with-asp-net-mvc-part-1-the-basics
关于c# - Entity Framework 中的验证无一异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39456536/