爱学习受.NET

www.icjyw.com 记录开发技术收藏天地
公告信息
www.icjyw.com 记录开发技术收藏天地
文章分类
文章档案
文章
用EF Code First和ASP.Net MVC3进行类级别模型验证
2011/6/25 21:30:23

EF code first中,支持对模型上数据批注属性(Data Annotation Validation
attributes)的自动强制验证是其中之一。它让你很容易地在模型层实现属性层验证逻辑。

 

你能应用验证属性attribute)—— 如.NET 4内置的[Required],[Range]—— [RegularExpression]
到你的模型类中,从而保证存储到数据库之前模型属性的有效性得到验证。你也能生成你自己的定制验证属性像这个比较酷的[CreditCard]validator)并将他们通过EF
Code First自动强制实施。这是一个在你的模型中验证属性值的简单方法。

 

使用IValidatableObject实施类级别模型验证

数据注释属性供了一种简单的方法来验证你的模型类中的单个属性值。

有些人问道:是否EF Code First也支持在模型对象上应用类级别验证方法,只管验证规则而不需要涉及很多属性值?
答案是肯定的——你有一个很简单的方法来实现:在你的模型类中实现IValidatableObject接口。

IValidatableObject.Validate()方法

IValidatableObject.Validate()方法能应用涉及多个属性的验证规则,并返回多方个验证错误。每个返回的验证结果都提供一个错误消息和一个导致验证冲突的候选属性名称列表(这对显示UI内的错误信息非常有用)。

 

强制自动验证

在实现了IvalidatableObject接口的模型对象被保存的时候,EF Code
First(自CTP5起)现在会自动调用Validate()方法。你无需写任何代码来实现它——现在这个是默认支持的。

这个新支持意味着下面违反了上面所说的一条商业规则的代码将在我们调用Northwind.DBContext的“SaveChanges()“方法的时候自动抛出一个异常(并中止事务)。

 

主动检查验证错误IC报价网

除了相应地处理验证异常之外,EF Code First还允许你主动检查验证错误。自CTP5开始,
你能调用DbContext基类的GetValidationErrors()方法来返回一列被处理模型对象中的验证错误。GetValidationErrors()将返回所有验证错误——不管他们是通过数据批注属性(DataAnnotation Attribute)还是通过IValidatableObjectValidate()实现生成的。

新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"
 MyQBlog   浏览(3383)   评论(0)   关键字
  
Copyright © 2010-2020 power by CYQ.Blog - 秋色园 v2.0 All Rights Reserved