我的应用程序中有一个用户实体,用户在注册到应用程序时输入一些基本信息。如果他们想要使用一些高级功能,他们必须提供完整的信息。
所以我有两个验证方案。
我的第一种方法是将Required
属性与MyRequired
属性交换,以避免通过实体框架在数据库中将列创建为NOT NULL。
但是如果我将它添加到我的数据库上下文中,则验证模型。所以如果它只是填充了基本信息,我就无法添加实体。
有没有办法让一个实体拥有多种不同的验证方案?
答案 0 :(得分:3)
有没有办法验证具有不同风格的模型?
这就是视图模型应该做的事情。我建议你不要将EF模型传递给视图。同时避免将EF域模型传递给您的操作=>总是使用视图模型。这些类专门设计用于满足给定视图的要求,包括验证属性。然后将模型实体映射到视图模型。
通过这种方式,您的域模型与在给定视图上呈现信息的方式完全分离。另外(因为它是你的情况)相同的域模型可以在不同的视图上具有两个不同的表示以及当然的不同的验证要求=>视图模型填补了这个空白。