我使用的是带有代码优先模型的实体框架4.1。一种常见的模式是,许多对象引用拥有它们的用户,例如
public class Item
{
public User Owner { get; set; }
}
这在数据库中创建了一个可以为NULL的列,但由于每个项都必须有一个所有者,我希望该列标记为NOT NULL。如果我使用[Required]
属性,那么提交表单以创建Item会导致错误。该字段从不通过窗体设置,只在代码中手动设置。
通常建议为此类情况创建单独的视图模型。使用数据库模型作为输入表单的视图模型被视为一种反模式。
制作一个与Item
具有相同属性和相关数据验证属性的ItemViewModel
。您可能需要使用一个名为Automapper的库来自动执行这些情况下所需的无聊属性复制代码。