Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁止System.CompositionModel.DataAnnotation生成db scema,而仅将其用于非结构化的jquery验证_C#_Asp.net Mvc_Entity Framework_Data Annotations_Unobtrusive Validation - Fatal编程技术网

C# 禁止System.CompositionModel.DataAnnotation生成db scema,而仅将其用于非结构化的jquery验证

C# 禁止System.CompositionModel.DataAnnotation生成db scema,而仅将其用于非结构化的jquery验证,c#,asp.net-mvc,entity-framework,data-annotations,unobtrusive-validation,C#,Asp.net Mvc,Entity Framework,Data Annotations,Unobtrusive Validation,我想使用System.CompositionModel.DataAnnotation来构建模型,但它不应该影响数据库架构。例如,如果我使用的是Required,则它不应该使该列在数据库中不可为null。我想使用数据注释的原因是为了MVC4jQuery的非结构化验证 到目前为止,我已经通过使用 @Html.TextBoxFor(model => model.BookingRequest.Email, new { data_val = "true", data_val_required = "

我想使用System.CompositionModel.DataAnnotation来构建模型,但它不应该影响数据库架构。例如,如果我使用的是
Required
,则它不应该使该列在数据库中不可为null。我想使用数据注释的原因是为了MVC4jQuery的非结构化验证

到目前为止,我已经通过使用

@Html.TextBoxFor(model => model.BookingRequest.Email, new { data_val = "true", data_val_required = "Please provide Special Notes" })
我认为这不是执行验证的最佳实践或标准方法

我想把我的模型改成这样

[Required]
public string Email { get; set; }
public string CustomerName { get; set; }
public string ContactNumber { get; set; }
因此,在TextAreaFor中生成html元素时,我不需要传递html属性,但在数据库中,它应该可以为空

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

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


提前感谢您抽出时间回顾我的问题。

从您的解释中不太清楚您使用的是哪种EF方法,以下是我对使用实体框架的DB first方法的解决方案:

添加验证属性,即Dataanotation,其属性与要在模型数据库中使用的属性相同

  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; }
    }
总之

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


我希望这有帮助

好主意是将数据库模型和视图模型分开。。。。并编写一个转换器,将视图模型转换为数据库模型。它需要更改数据库架构,这不是问题中提到的首选方法。您使用的是哪种ef方法?:),我在这里解释的方法适用于DB first(首先对代码不确定),请看这里:您可以看到我使用的是fluent api。指出代码优先的方法还不够吗。