如何避免MVC Model First 设计时添加的DataAnnotation被覆盖掉
2014-06-04 19:39
513 查看
结合多方资料做一系统,发现Code First中所有代码要自己写,无法自动生成(暂时没有找到方法,有知道的大能,给指点一下,好像在NuGet中有一个插件可以直接从数据库中生成Code First所需类,不过没有研究.),所有采用Model First,但是Model First中自动生成的文件没有添加DataAnnotation(同样求指点),所以在自动生成后再自行添加DataAnnotation,这时问题又出来了.每次修改Model后,就把原来的给覆盖了.得重新添加DataAnnotation.
经查看资料Validation with the Data Annotation Validators 发现是这样解决的.现记录下来,以备后查.
第一步:在自动生成Model文件的文件夹中添加同名的分部类(在类名前添加关键字 partial ),如:
自动生成的类为 "User" 类, 要写成 public partial class User
第二步:在它前面添加[MetadataType(typeof(UserDataAnnotation))],其中UserDataAnnotation 是要面要新建的另一个类,这个类就是我们要自定义添加的内容.
第三步,添加 UserDataAnnotation 类,然后添加相应内容
代码如下:
新添加的内容
参考资料:Validation with the Data Annotation Validators
经查看资料Validation with the Data Annotation Validators 发现是这样解决的.现记录下来,以备后查.
第一步:在自动生成Model文件的文件夹中添加同名的分部类(在类名前添加关键字 partial ),如:
自动生成的类为 "User" 类, 要写成 public partial class User
第二步:在它前面添加[MetadataType(typeof(UserDataAnnotation))],其中UserDataAnnotation 是要面要新建的另一个类,这个类就是我们要自定义添加的内容.
第三步,添加 UserDataAnnotation 类,然后添加相应内容
代码如下:
using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace DataModel { // 这一句代码最重要 //UserDataAnnotation,必须是下面要添加的类名. [MetadataType(typeof(UserDataAnnotation))] //这个必须要和自动生成的类同名,而且必须要在同一命名空间下 public partial class User { } //这个类名必须是 [MetadataType(typeof(UserDataAnnotation))] 里面的类名 public partial class UserDataAnnotation { [Display(Name="用户名")] public string UserName { get; set; } [Display( Name = "电子邮箱" )] [DataType( DataType.EmailAddress,ErrorMessage="邮箱格式不正确")] public string Email { get; set; } [Display(Name="显示名")] [StringLength(20,MinimumLength=2,ErrorMessage="{2}到{1}个字符")] public string DisplayName { get; set; } [Display(Name="用户组编号")] public virtual ICollection<Longger_Role> RoleID { get; set; } } }
新添加的内容
参考资料:Validation with the Data Annotation Validators
相关文章推荐
- Asp.net mvc + .net ef database first 或 model first 时如何添加验证特性
- Asp.net mvc + .net ef database first 或 model first 时如何添加验证特性
- 如何避免在EF自动生成的model中的DataAnnotation被覆盖掉
- [备用]权限设计方案、如何使用session、MVC如何使用模板、DropdownList、怎么添加Bootstrape框架、使用ASP.NET MVC 4 Bootstrap Layout Template(VS2012)
- 如何避免在EF自动生成的model中的DataAnnotation被覆盖掉
- MVC:如何设计多语言支持
- MVC:如何设计多语言支持
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(1)
- 如何把一个文本列表添加到 TListBox 并避免重复项 - 回复 "xnlxw" 的问题
- 请问,如何在状态机工作流设计时将StateActivity、EventDrivntActivity、SetStateActivity作为一个整体添加到设计布局上呢?
- 如何利用Interception简化MVVM中的Model和ViewModel的设计
- ASP.NET MVC:如何实现一个自己的ModelBinder?
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(3)
- 如何利用Interception简化MVVM中的Model和ViewModel的设计
- ASP.NET MVC & EF 构建智能查询 二、模型的设计与ModelBinder
- VS2008 在进行ASP.NET 开发时 如何避免加载设计页面时假死及减少保存所耗的时间。
- flex自定义组件如何在设计时显示预期结果/已添加控件
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(3)
- JSP设计模式基础:View Helper模式——学习如何使用View Helper模式使得Model数据适应表现层的需要(2)
- Django开发 - 如何在管理界面中添加Model