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 类。

  • 相关阅读:
    Hadoop安装配置(ubuntu-12.04.2-server-amd64)
    初识hadoop
    mybatis多表关联配置
    mybatis的详解
    SpringMVC学习笔记
    spring注解
    web filter用spring注入对象
    luence全文检索(数据库检索)
    C++ inline 函数
    Ubuntu16.04 QT5编译出现cannot find -lGL和collect2:error:ld r
  • 原文地址:https://www.cnblogs.com/kesalin/p/mvc_entity_framework.html
Copyright © 2011-2022 走看看