从生成db scema中禁用System.CompositionModel.DataAnnotation而不是仅用于不引人注意的jqueryvalidation

我想使用System.CompositionModel.DataAnnotation来构建Model,但它不应该影响数据库模式,例如,如果我使用Required那么它不应该使该列在数据库中不可为空。 我想使用Data注释的原因是用于MVC 4 JQuery Unobstrusivevalidation。

截至目前,我已通过使用validation

 @Html.TextBoxFor(model => model.BookingRequest.Email, new { data_val = "true", data_val_required = "Please provide Special Notes" }) 

我认为这不是执行validation的最佳实践或标准方法。

我想把我的模型改成这样的东西。

 [Required] public string Email { get; set; } public string CustomerName { get; set; } public string ContactNumber { get; set; } 

所以我不需要在TextAreaFor中生成html元素时传递html属性,但在数据库中它应该是可空的。

我这样做的原因是有另一个服务使用相同的上下文但它不提供电子邮件值。 而且我不想改变已经运行的服务。

我使用EntityTypeConfigurtaion(Fluent API)而不是DataAnnotation来配置模型。

在此先感谢您抽出时间来审核我的问题。

从你的解释中你不清楚使用哪种EF方法,这是我对entity framework的第一种方法的解决方案:

添加您的validation属性,即Dataanotation,它们具有您将在model-db中使用的相同属性

  public partial class XContent { [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resource))] [RegularExpression(@"^[a-zA-Z]+$", ErrorMessageResourceName = "UseLettersOnly", ErrorMessageResourceType = typeof(Resource))] public string FullName { get; set; } } 

并创建一个具有相同模态名称的分部类,并添加元数据属性以在类上面使用

  [MetadataType(typeof(XContent))] public partial class YourModelClassName { public string FullName { get; set; } } 

所以在一个人

你必须添加两个类,一个用于映射两个类,第二个类实际上包含数据注释

我希望有所帮助!!