EF DataBase First生成model的验证
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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就不会受影响了。
下面是样例代码:
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的验证的主要内容,如果未能解决你的问题,请参考以下文章
EF中三大开发模式之DB First,Model First,Code First以及在Production Environment中的抉择
Entity Framework使用Code Frist/Model First 还是Database First?
ef codeFirst 修改表结构 增加字段等 EF code first需要重新生成库导致数据丢失的问题.
如何避免在EF自动生成的model中的DataAnnotation被覆盖掉