如何使属性成为必需的(用于字段验证)但对于数据库代码迁移可为 Nullable?
我确实有一个包含一千个条目的数据库表。最近需要添加所需的 DateTime 属性。
[Required]
[Display(Name = "Birth", Order = 10)]
public DateTime? Birth { get; set; }
如果我设置了 [Required]
注释,代码优先迁移会将 NOT NULL 添加到列声明中。但是,所有当前条目都没有“出生”数据。它将为 NULL。
Birth
属性应该是 View 字段验证所必需的,但它可以在数据库中为空。这有可能吗?
我已经试过添加“?” (可为空)到属性和“虚拟”但没有成功。
最佳答案
使用您的模型进行数据库/实体通信。
为您的 UI 层使用 View 模型。在 ViewModel 的属性上标记 Required,在模型上标记 Nullable。根据需要在您的代码中执行转换。将所有与 UI 相关的属性装饰(如显示、验证等)也移动到 ViewModel。
可以使用 AutoMapper 自动执行转换插件,available通过 NuGet 包管理器。
关于c# - 必需属性但可为空, Entity Framework 通过 Code First,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799903/