怎样避免在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; }
}
}
OK,大功告成。
怎样避免在EF自己主动生成的model中的DataAnnotation被覆盖掉的更多相关文章
- 如何避免在EF自动生成的model中的DataAnnotation被覆盖掉
摘自ASP.NET MVC 5 网站开发之美 6.4 Metadata与数据验证 如果使用Database-First方式生成*.edms,那么所生成的类文件会在*.tt文件的层级之下,扩展名tt是一 ...
- EF DataBase First生成model的验证
如何避免在EF自动生成的model中的DataAnnotation被覆盖掉 相信很多人刚接触EF+MVC的时候,DataBase First模式生成model类中加验证信息的时候,会在重新生成mode ...
- 【菜鸟看框架】——EF怎样自己主动生成实体
引言 在上一篇博客中给大家介绍了一些关于EF框架的基本知识.让大家对实体架构算是有了一个入门的认识,当然知识 这一篇博客是不能非常清楚的理解实体架构的内涵的.我们须要在实践中自己去不断的研究和探索当中 ...
- 自己主动生成材质Material(Unity3D开发之十九)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/46854411 ...
- Mybatis自己主动生成代码
在mybatis自己主动生成代码有两种方式: 方式一:是通过使用eclipse作为开发工具.採用maven来构建项目生成的.以下的演示是通过第一种方式. 今天来记录下mybatis-generator ...
- php学习之道:php中soap的使用实例以及生成WSDL文件,提供自己主动生成WSDL文件的类库——SoapDiscovery.class.php类
1. web service普及: Webservice soap wsdl差别之个人见解 Web Service实现业务诉求: Web Service是真正"办事"的那个,提供 ...
- Java 编程 订单、支付、退款、发货、退货等编号主动生成类
订单.支付.退款.发货.退货等编号主动生成类 在商城网站中,订单编号的自动生成,ERP中各个单据的编号自动生成,都可以按照一下的方式来自动生成. 第一步:定义常量订单编号前缀.订单编号起始数.订单编号 ...
- ExtJS4 自己主动生成控制grid的列显示、隐藏的checkbox
因为某种原因.须要做一个控制grid列显示的checkboxgroup,尽管EXTJS4中的gridpanel自带列表能够来控制列的显示隐藏,可是有这种需求(须要一目了然) 以下先上图 waterma ...
- easy ui 自己主动生成accordion不能自适应父容器问题
用easy-ui的accordion,用json自己主动生成时,不能自适应父容器.代码例如以下: (document).ready(function(){ $.ajax({ ...
随机推荐
- [luogu1772 ZJOI2006] 物流运输 (最短路 线性dp)
题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪. ...
- 小白都能看懂的Linux系统下安装配置Zabbix
实验环境: 操作系统:Centos 7.6 服务器ip:192.168.10.100 运行用户:root 网络环境:Internet Zabbix是一个基于web界面的提供分布式系统监控及网络功能的企 ...
- 循环语句第2种 WHILE ... LOOP END LOOP;
--------第2种-------- WHILE ... LOOP END LOOP; declare n number(3) :=1; begin WHILE n&l ...
- 获取ip,判断用户所在城市
PHP获取IP地址 这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段: <? //PHP获取当前用户IP地址方法 $xp_Use ...
- ASP.NET-dropdownlist默认值
可以在第三个选项中定义一个默认值,但是返回数据的时候就不需要这种类似"请选择名称"之类的提示了,所以在构造seleclt option的时候,要在option中的属性中加上sele ...
- 洛谷 P2932 [USACO09JAN]地震造成的破坏Earthquake Damage
P2932 [USACO09JAN]地震造成的破坏Earthquake Damage 题目描述 Wisconsin has had an earthquake that has struck Farm ...
- HTML---经常使用标签总结与实践
什么是HTML? 超文本标记语言,标准通用标记语言下的一个应用. "超文本"就是指页面内能够包括图片.链接,甚至音乐.程序等非文字元素. 超文本标记语言的结构包含" ...
- 远古守卫/cocos2d-x 源代码/塔防游戏/高仿王国保卫战
下载地址:spm=686.1000925.0.0.j3MZhz&id=550780702354" style="color:rgb(224,102,102)"&g ...
- DevExpress TreeList控件的复选框
作者:jiankunking 出处:http://blog.csdn.net/jiankunking TreeList控件能够同一时候显示树结构和其它数据列,即在一个列上建立父子关系展开或收缩,同一时 ...
- C++提高速度