LINQ中的数据模型验证2011-12-21 博客园 b4n73:在讲MVC的token的时候,我简单的说了一下如果用LINQ生成实体的话如何做业务逻辑验证。现在我来详细说一下:
[Column(Storage="_userMail", DbType="VarChar(100)")]
public string userMail
{
get
{
return this._userMail;
}
set
{
if ((this._userMail != value))
{
this.OnuserMailChanging(value);
this.SendPropertyChanging();
this._userMail = value;
this.SendPropertyChanged("userMail");
this.OnuserMailChanged();
}
}
}
上面代码是dbml的designer类,是由LINQ自动生成的代码,从代码中可以看到LINQ为userMail的字段生成了get,set方法,留意一下set方法里面,首先调用了 this.OnuserMailChanging(value)的方法,也就是说我们可以在这个方法里面做一些业务逻辑的判断,如:
partial void OnuserMailChanging(string value)
{
Regex reg = new Regex(@"w+([-+."]w+)*@w+([-.]w+)*.w+([-.]w+)*");
if (!reg.IsMatch(value))
{
throw new ArgumentException("format error!");
}
}