必需的属性,但通过Code First可以实现Nullable,Entity Framework

Dan*_*tos 6 c# asp.net-mvc entity-framework ef-code-first ef-migrations

如何为数据库代码迁移创建所需的属性(用于字段验证)但是Nullable?

我有一个包含一千个条目的数据库表.最近需要添加一个必需的DateTime属性.

    [Required]
    [Display(Name = "Birth", Order = 10)]
    public DateTime? Birth { get; set; } 
Run Code Online (Sandbox Code Playgroud)

如果我设置了[Required]注释,则代码首次迁移将向列声明添加NOT NULL.但是,所有当前条目都没有"出生"数据.它将为NULL.

Birth物业应要求视野validatoin,但它可能是可空到数据库.这有可能吗?

我已经尝试添加"?" (可空)到财产和"虚拟"没有成功.

mar*_*tch 7

使用您的模型进行DB/Entity通信.

使用视图模型作为UI层.在ViewModel中的属性上标记为必需,在模型上标记Nullable.根据需要在代码中执行转换.将所有与UI相关的属性修饰(如显示,验证/等)也移动到ViewModel.

使用AutoMapper插件可以自动执行强制转换,可以通过NuGet包管理器获得.