[ASP.NET]让Entity Framework数据库优先模式也支持自动校验

让Entity Framework数据库优先也支持自动校验

罗朝辉 (http://kesalin.cnblogs.com/)

本文遵循“署名-非商业用途-保持一致”创作公用协议
 
ASP.NET MVC 确实比以前的ASP编程模式 VIEW-BLL-DAL三层架构长进了不少,再加上Entity Framework利器,开发Web应用非常容易。要结合这两者,使用 Code First 模式非常好用,这样我们就非常方便在模型的字段上加上许多 System.ComponentModel.DataAnnotations 来对字段进行字段校验。但如果使用 Database First 模式,就稍微有点不那么方便了,但是办法还是有的,使用 partial 类是一种解法。
 
示例代码演示了 Database First 模式下,使用两个数据模型,在其中使用 partial 类来实现对字段的自动校验,并且将数据模型封装带单独的 dll 中。演示结果如下:

 

上面 student 和 school 页面的数据来自两个的数据库,而名称长度的校验是在相应的 partial 类字段上加 System.ComponentModel.DataAnnotations 限定实现的。

工程结构如图所示:

演示代码很简单,在这里就只列出 student.cs 的实现:

using System;
using System.ComponentModel.DataAnnotations;

namespace Student.DAL
{
    public partial class student
    {
        [Required]
        [StringLength(8, ErrorMessage = "{0} 至少应包含6个字符。", MinimumLength = 6)]
        [Display(Name = "名称")]
        public string MName
        {
            get { return Name; }
            set { Name = value; }
        }

        [Required]
        [Display(Name = "Age")]
        public Int64 MAge
        {
            get { return Age; }
            set { Age = value; }
        }
    }
}

 

从上面的代码可以看出,partial 类对 EF 自动生成的 Entity 类进行了简单的封装,虽然这样有冗余,但为了能实现自动检验,也就容忍了。不知还有更好的办法没有,前提是不要修改 EF 自动生成的 Entity 类。

posted @ 2012-04-11 21:59  飘飘白云  阅读(1237)  评论(1编辑  收藏  举报
本博客遵循 Creative Commons License “署名-非商业用途-保持一致”创作共用协议。 与我联系