我正在更新多个表单/页面上的记录,如向导。我需要在每个表单后保存到数据库。然而,这只是部分记录。 EF POCO模型包含所有属性(字段)的所有数据注释,因此我怀疑当我保存此部分记录时,我将收到错误。
所以我不确定最简单的解决方案。
我想到的一些选项:
a)为每个表单创建一个视图模型。 View模型上的数据注释而不是EF域模型。
b)在控制器中保存特定属性而不是SaveAll,从而不会触发对非相关属性的验证。
c)其他一些解决方案...... ??
非常感谢提前,
答案 0 :(得分:1)
选项1.无论如何,验证可能(特别是在您的情况下)属于视图模型。如果技术上有效(DB约束)具有部分填充的记录,则这进一步证明验证属于视图。
此外,通过将验证抽象到您的视图,您允许其他消费应用程序拥有自己的验证逻辑。
其他想法:
我会说,但是,作为一个侧面说明,保存您的数据有点尴尬,就像您正在做的那样,除非您有一个非常好的理由(我原先假设您这样做),您可以考虑持有在其他地方(会话)上的数据,并在向导结束时将它们保持在一起。
这将允许更好,更合适的数据库约束,以实现更好的数据完整性。例如,如果整个记录不允许使用空名称,那么为了打破向导的提交而允许空值可能会导致更长期的麻烦。