EF DataBase First生成model的验证
如何避免在EF自动生成的model中的DataAnnotation被覆盖掉
相信很多人刚接触EF+MVC的时候,DataBase First模式生成model类中加验证信息的时候,会在重新生成model的时候被重写掉。
这里介绍一个方法:
比如我有个Book类是从数据库中生成到model中的,我们可以在Models文件夹中创建一个局部类名称与Book类同名(注意:该类的命名空间必须与自动生
成的类属于同一个命名空间),类内容为空的就可以,然后在新建的部分类下方再创建一个类(BookMetaData),类中中加上我们需要验证的列与验证信
息,然后需要将
[MetadataType(typeof(BookMetaData))]加在新建的Book类名上方
这时我们在view页面中不用更改代码。这样当我们重新生成model的时候,我们自己定义的部分类Book就不会受影响了。
解决方案:

说明:Model1.edmx是ef生成的,Book.cs是我额外添加的,代码在如下
Model代码:
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.ComponentModel.DataAnnotations;
6
7 namespace Web.Models
8 {
9 [MetadataType(typeof(BookMetadata))]
10 public partial class Book
11 {
12 class BookMetadata
13 {
14 [Display(Name = "名称")]
15 [Required(ErrorMessage = "名称不能为空")]
16 public string name { get; set; }
17
18 [Required(ErrorMessage = "价格不能为空")]
19 [Range(5, 100, ErrorMessage = "价格5-100之间")]
20 public decimal price { get; set; }
21
22 public decimal time { get; set; }
23 }
24 }
25 }
控制器代码:
Controllers中BookController.cs的Add方法代码如下
public ActionResult Add()
{
return View();
}
[HttpPost]
public ActionResult Add(Book model)
{
if (ModelState.IsValid)
{
db.Book.AddObject(model);
int res = db.SaveChanges();
ViewData["status"] = "成功:" + DateTime.Now.ToString();
}
else {
ViewData["status"] = "失败:" + DateTime.Now.ToString();
}
return View();
}
运行效果截图:

测试环境:VS2010+.Net4.0+MVC4+EF4
EF DataBase First生成model的验证的更多相关文章
- Asp.net mvc + .net ef database first 或 model first 时如何添加验证特性
今天有个同事问到,在使用Entity Framework 的Database frist或model first时,怎么在model上添加验证的特性? 因为此时的Model是是VS 工具怎么生成的,直 ...
- 怎样避免在EF自己主动生成的model中的DataAnnotation被覆盖掉
相信非常多人刚接触EF+MVC的时候,会有这个疑问.就是当我们在model类中加验证信息的时候.会在又一次生成model的时候被重写掉. 这里介绍一个方法: 比方我有个Employee类是从数据库中生 ...
- EF Power Tools的Reverse Engineer Code First逆向生成Model时处理计算字段
VS2013上使用EF Power Tools的Reverse Engineer Code First逆向生成Model时,没有处理计算字段.在保存实体时会出现错误. 可以通过修改Mapping.tt ...
- EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证
之前的Code First系列文章已经演示了如何使用Fluent API和Data Annotation的方式配置实体的属性,比如配置Destination类的Name属性长度不大于50等.本文介绍E ...
- 用EF DataBase First做一个简单的MVC3报名页面
使用EF DataBase First做一个简单的MVC3报名网站 ORM(Object Relational Mapping)是面向对象语言中的一种数据访问技术,在ASP.NET中,可以通过ADO. ...
- asp.net mvc5 DataBase First下model校验问题(MetadataType使用)
最近学习asp.net mvc5,使用 asp.net mvc5+EF6+AutoFac做个小Demo,其中是先设计的数据库表,就直接选择了EF的DataBase First(三种开发模式分别是c ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式
作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...
- ThinkPHP 类似Yii的Gii生成Model的功能。
ThinkPHP 类似Yii的Gii生成Model的功能.自动生成ThinkPhp 3.1 的基础模型.. #!/usr/bin/env php <?php /** * * THINKPHP 基 ...
- 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法
之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...
随机推荐
- Hadoop集群中pig工具的安装过程记录
在Hadoop环境中安装了pig工具,安装过程中碰到了一些问题,在此做一下记录: 主要安装流程参考:http://www.cnblogs.com/yanghuahui/p/3768270.html ...
- tomcat服务
参考资料:http://www.chysoft.net/showinfo.asp?id=84 (1) Tomcat服务的安装 说明: 默认情况下,tomcat的服务是未安装的,具体tomcat服务的安 ...
- 网站常用css必备css reset
在我们写前端代码页面的时候,很多常用的CSS类都是固定的!但没有一个标准或者大家都按自己的方式去随意的写,这样就每次都重复写一些固定的类! 为此HTML5 Doctor(HTML5医生)为我们总结了一 ...
- HDAO
dx11 hdao10.1 除了dx的sample竟然搜不到什么文档.... 估计去问别人也是让我继续看代码.. ---------------------------------------- 算法 ...
- 【WCF--初入江湖】11 安全
11 安全 前言 [1]传输安全 传输安全模式 传输安全与绑定协议 [2]身份验证 身份验证分类 证书 示例:传输安全匿名客户端证书的使用 1. 传输安全 保证信息在传输过程中的 ...
- Sqlitekit 封装管理
最近需要用到Sqlite数据库来做一个游戏的数据存储.网上搜了一下,两种方法,一种是自己dll搭建环境有可能还需要编译之类的,我自己是搭建出来了,不过我没采用. 还有一种就是使用sqlitekit插件 ...
- aircrack-ng 字典破解WPA / WPA2
1. 安装 首先安装两个扩展sudo apt-get install build-essentialsudo apt-get install libssl-dev 然后到http://download ...
- 三分初练QAQ
求凸函数的极值的一般方法是三分 三分的思想大概是这样的: 例如我们要求下凸函数的极值 在区间[L,R]上, 我们定义m1为区间的第一个三等分点 定义m2为区间的第二个三等分点 设函数值为F(x) 则若 ...
- 转载CSDN (MVC WebAPI 三层分布式框架开发)
前言:SOA(面向服务的架构)是目前企业应用开发过程中普遍采用的技术,基于MVC WebAPI三层分布式框架开发,以此适用于企业信息系统的业务处理,是本文论述的重点.此外,插件技术的应用,富客户端JQ ...
- Android:创建Android工程
创建Android工程,在Eclipse左栏右键 new->project.. (版本不一样,名字会有所区别) 然后选择Android下的Android application projec ...