zoukankan      html  css  js  c++  java
  • [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 类。

  • 相关阅读:
    解决FileReader读取文件乱码问题
    comparable 与 comparator
    JavaScript添加水印
    mybatis里oracle与MySQL的insert_update
    关于回车换行
    solr创建collection
    hbase相关配置说明
    java基础(十一)--- IO
    java基础(十)--- 异常
    c++中的vector原理
  • 原文地址:https://www.cnblogs.com/kesalin/p/mvc_entity_framework.html
Copyright © 2011-2022 走看看