在使用EF / Data Annotations时如何验证部分记录?

时间:2012-11-14 01:13:40

标签: asp.net-mvc-3 entity-framework-4 entity-framework-5

我正在更新多个表单/页面上的记录,如向导。我需要在每个表单后保存到数据库。然而,这只是部分记录。 EF POCO模型包含所有属性(字段)的所有数据注释,因此我怀疑当我保存此部分记录时,我将收到错误。

所以我不确定最简单的解决方案。

我想到的一些选项:

a)为每个表单创建一个视图模型。 View模型上的数据注释而不是EF域模型。

b)在控制器中保存特定属性而不是SaveAll,从而不会触发对非相关属性的验证。

c)其他一些解决方案...... ??

非常感谢提前,

1 个答案:

答案 0 :(得分:1)

选项1.无论如何,验证可能(特别是在您的情况下)属于视图模型。如果技术上有效(DB约束)具有部分填充的记录,则这进一步证明验证属于视图。

此外,通过将验证抽象到您的视图,您允许其他消费应用程序拥有自己的验证逻辑。

其他想法:

我会说,但是,作为一个侧面说明,保存您的数据有点尴尬,就像您正在做的那样,除非您有一个非常好的理由(我原先假设您这样做),您可以考虑持有在其他地方(会话)上的数据,并在向导结束时将它们保持在一起。

这将允许更好,更合适的数据库约束,以实现更好的数据完整性。例如,如果整个记录不允许使用空名称,那么为了打破向导的提交而允许空值可能会导致更长期的麻烦。