怎样避免在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,大功告成。





原文地址:https://www.cnblogs.com/zhchoutai/p/8450223.html

时间: 2024-10-09 02:18:09

怎样避免在EF自己主动生成的model中的DataAnnotation被覆盖掉的相关文章

如何避免在EF自动生成的model中的DataAnnotation被覆盖掉

相信很多人刚接触EF+MVC的时候,会有这个疑问,就是当我们在model类中加验证信息的时候,会在重新生成model的时候被重写掉.这里介绍一个方法: 比如我有个Employee类是从数据库中生成到model中的,我们可以在Models文件夹中创建一个部分类名称与Employee类同名,然后在新建的部分类中加上我们需要验证信息,这时我们在view页面中引用Models.Employee做为页面model类.这样当我们重新生成model的时候,我们自己定义的部分类Employee就不会受影响了.

EF DataBase First生成model的验证

如何避免在EF自动生成的model中的DataAnnotation被覆盖掉 相信很多人刚接触EF+MVC的时候,DataBase First模式生成model类中加验证信息的时候,会在重新生成model的时候被重写掉.这里介绍一个方法:比如我有个Book类是从数据库中生成到model中的,我们可以在Models文件夹中创建一个局部类名称与Book类同名(注意:该类的命名空间必须与自动生 成的类属于同一个命名空间),类内容为空的就可以,然后在新建的部分类下方再创建一个类(BookMetaData)

mybatis使用generator自己主动生成代码时的类型转换

使用mybatis的generator自己主动生成代码,可是oracle数据库中number(6,2)总是自己主动转成BigDecimal.我想要转成的是float类型 这样就写了一个类型转换器,须要继承JavaTypeResolver接口 然后在mybaties配置文件generatorConfig.xml中类型转换配置位置加入上就可以 <javaTypeResolver type="com.generator.MyJavaTypeResolver"> <prope

在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,依据hbm文件自己主动生成pojo和数据库脚本

     首先.我一定要吐槽下,这个Ant管理部署项目的工具.以及hibernate刚刚学习,导入我这一个简单的问题整了一天多.实在效率有点低下. 在这两天中,①了解了Ant.知道了在Ant中非常灵活的步骤项目的情况,知道了build.xml文件的一些基本写法.②还学习了在MyEclipse这种集成工具中完毕项目部署. ③以及在这两种情况中.利用hibernateTools中的hbm2java和hbm2ddl工具,依据对象关系映射文件,自己主动生成POJO以及SQL文件(就是数据表). 一,在w

Mybatis自己主动生成代码

在mybatis自己主动生成代码有两种方式: 方式一:是通过使用eclipse作为开发工具.採用maven来构建项目生成的.以下的演示是通过第一种方式. 今天来记录下mybatis-generator插件自己主动生成xml mapper和model还有dao接口,这样我们就能够把精力放在业务代码上.而不须要关心数据库的详细操作. 这里我使用eclipse作为开发工具,採用maven来构建项目. 1. 编写pom.xml文件 这里仅仅有3个jar文件,数据库使用mysql <project xml

Android studio 插件之 GsonFormat (自己主动生成javabean)

概述 相信大家在做开发的过程中都写过非常多的javabean ,非常多情况下 都是一个列表数据就是一个单独的javabean.假设大家自己敲的话费时费力 还非常easy敲错. 今天给大家推荐一个插件 GsonFormat  这个插件就是能够让我们直接将服务端返回的json转化为实体类.Android studio和idea都有, eclipse我没有试过. 大家能够找找有没有. 操作步骤 第一步  下载插件 下载插件的过程我前面有一篇博客已经有具体步骤 Android Studio插件之sexy

[权限管理]按子系统自己主动生成用户权限

通常我们都知道单个用户加入用户权限,或者这个用户属于哪个组权限.可是也有依据职能业务跨组业务,比方运营总监,他想要生产部+质量部+採购部+计划部的查询权. 財务审计:须要財务模块的全部权限+其它模块的查询.老总:须要全部模块的查询权. 事实上易飞提供按模块子系统,批量依照设定的查询 新增 改动 删除 审批 等批量赋权限. 如果:A456是老总. 结果: 这样就批量完毕啦. 工具栏右边也另一个合并用户权限的功能: 直接把原用户的权限叠加到新编号. [权限管理]按子系统自己主动生成用户权限

金融行业工作报告自己主动生成系统

对于诸多行业客户,在平时工作实践中,会产生大量的財务数据.交易数据,以及基于这些数据的计算过程和结果.怎样将此类数据的採集.编辑.加工.汇总.整理.存储.产生分析报告,得到有效信息,工作量极大,人工成本昂贵,而且繁琐,存在风险.假设客户的工作报告生成系统为人工制作,操作风险会比較高,数据需人工採集编辑,未来产品数量和数据爆发式增长,现有制作报告人力会面临制作时效较长.缺失系统管理.无法有效完毕报告查询定位等风险,间接影响客户服务体验.基于此,构建一个行业客户工作报告生成配套管理系统,从报告的出生

考试试卷自己主动生成系统

能实现题库管理和自己主动生成试卷的功能,将试题管理.试卷生成.电子答卷和考试分析集为一体,不仅能帮助教师适时编制各类考试题目.生成标准试卷,还能对学生成绩录入.保存.分析并生成考试总结. 百年树木,十年树人,教育的成败决定着一个国家的前途和未来.教育现代化和自己主动化可以大大提高整个考试过程的效率,减轻了教师的工作负担,有效地推动教学改革,对提高教学质量起着非常大的促进作用. 应用我公司的报告自己主动生成系统,能实现题库管理和自己主动生成试卷的功能,将试题管理.试卷生成.电子答卷和考试分析集为一