zoukankan      html  css  js  c++  java
  • 怎样避免在EF自己主动生成的model中的DataAnnotation被覆盖掉

    相信非常多人刚接触EF+MVC的时候,会有这个疑问。就是当我们在model类中加验证信息的时候,会在又一次生成model的时候被重写掉。这里介绍一个方法:

    比方我有个Employee类是从数据库中生成到model中的。我们能够在Models目录中创建一个部分类名称与Employee类同名(注意:该类的命名空间必须与自己主动生成的类属于同一个命名空间),类内容为空的就能够,然后在新建的部分类下方再创建一个类(EmployeeMetaData),类中中加上我们须要验证的列与验证信息,然后须要将

    [MetadataType(typeof(EmployeeMetaData))]加在新建的Employee类名上方

    这时我们在view页面中不用更改代码。

    这样当我们又一次生成model的时候,我们自定义的部分类Employee就不会受影响了。

    以下是例子代码:

    从数据库中生成的Employee:

    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated from a template.
    //
    //     Manual changes to this file may cause unexpected behavior in your application.
    //     Manual changes to this file will be overwritten if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    namespace ValidationDemo
    {
        using System;
        using System.Collections.Generic;
        
        public partial class Employee
        {
            public Employee()
            {
                this.Employees1 = new HashSet<Employee>();
                this.Orders = new HashSet<Order>();
                this.Territories = new HashSet<Territory>();
            }
        
            public int EmployeeID { get; set; }
            public string LastName { get; set; }
            public string FirstName { get; set; }
            public string Title { get; set; }
            public string TitleOfCourtesy { get; set; }
            public Nullable<System.DateTime> BirthDate { get; set; }
            public Nullable<System.DateTime> HireDate { get; set; }
            public string Address { get; set; }
            public string City { get; set; }
            public string Region { get; set; }
            public string PostalCode { get; set; }
            public string Country { get; set; }
            public string HomePhone { get; set; }
            public string Extension { get; set; }
            public byte[] Photo { get; set; }
            public string Notes { get; set; }
            public Nullable<int> ReportsTo { get; set; }
            public string PhotoPath { get; set; }
            public Nullable<int> COL1 { get; set; }
        
            public virtual ICollection<Employee> Employees1 { get; set; }
            public virtual Employee Employee1 { get; set; }
            public virtual ICollection<Order> Orders { get; set; }
            public virtual ICollection<Territory> Territories { get; set; }
        }
    }
    

    创建一个部分类,命名为Employee:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    
    namespace ValidationDemo
    {
        [MetadataType(typeof(EmployeeMetaData))]
        public partial class Employee
        {
        }
        public partial class EmployeeMetaData
        {
            public int EmployeeID { get; set; }
            [Required]
            public string LastName { get; set; }
            public string FirstName { get; set; }
            public string Title { get; set; }
            public string TitleOfCourtesy { get; set; }
            public Nullable<System.DateTime> BirthDate { get; set; }
            public Nullable<System.DateTime> HireDate { get; set; }
            public string Address { get; set; }
            public string City { get; set; }
            public string Region { get; set; }
            public string PostalCode { get; set; }
            public string Country { get; set; }
            public string HomePhone { get; set; }
            public string Extension { get; set; }
            public byte[] Photo { get; set; }
            public string Notes { get; set; }
            public Nullable<int> ReportsTo { get; set; }
            public string PhotoPath { get; set; }
            public Nullable<int> COL1 { get; set; }
        }
    }

    參考文档:
    http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validation-with-the-data-annotation-validators-cs

    OK,大功告成。


    
    
查看全文
  • 相关阅读:
    CI框架基本配置/教你学习CI框架codelgniter
    CI框架 简介
    PHP CI框架目录结构及运行机制
    [老老实实学WCF] 第三篇 在IIS中寄存服务
    [老老实实学WCF] 第二篇 配置WCF
    [老老实实学WCF] 第一篇 Hello WCF
    Js获取当前日期时间及其它操作
    当<script>中的type等于text/html的妙用
    asp.net MVC3 仿照博客园功能 异常处理
    jquery.validate使用攻略
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10527883.html
  • Copyright © 2011-2022 走看看