码迷,mamicode.com
首页 > 数据库 > 详细

EF DataBase First生成model的验证

时间:2016-03-04 16:00:46      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

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

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

 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             [StringLength(20, MinimumLength = 2, ErrorMessage = "名称不能大于{2} 且要小于{1}")]
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 }

解决方案截图:

技术分享

EF DataBase First生成model的验证

标签:

原文地址:http://www.cnblogs.com/webapi/p/5242067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!