如何使实体框架属性不为NULL,但在表单提交中不是必需的



我使用的是带有代码优先模型的实体框架4.1。一种常见的模式是,许多对象引用拥有它们的用户,例如

public class Item
{
    public User Owner { get; set; }
}

这在数据库中创建了一个可以为NULL的列,但由于每个项都必须有一个所有者,我希望该列标记为NOT NULL。如果我使用[Required]属性,那么提交表单以创建Item会导致错误。该字段从不通过窗体设置,只在代码中手动设置。

通常建议为此类情况创建单独的视图模型。使用数据库模型作为输入表单的视图模型被视为一种反模式。

制作一个与Item具有相同属性和相关数据验证属性的ItemViewModel。您可能需要使用一个名为Automapper的库来自动执行这些情况下所需的无聊属性复制代码。

最新更新