在NHibernate中更新非规范化表的所有行

时间:2009-11-25 11:15:40

标签: nhibernate nhibernate-mapping

嘿所有,快速的NHibernate问题。

在我当前的项目中,我们有一个非规范化表,对于给定的唯一头记录,它将具有一个或多个非规范化行。

当用户访问表示标题的POCO并执行更新时,我需要将此更改级联到所有非规范化行。例如,如果用户更改了规范化标题中的字段“A”,我需要所有非规范化行现在反映字段“A”的新值。

我当前的目的只是在属性集的规范化标头中做一个foreach,因为我已经有一个IList代表非规范化的行,但我希望有一个更优雅的解决方案,不涉及编写foreach循环每个需要传播到非规范化表的规范化字段。

在纯Sproc世界中,我们只是在具有适当where子句的save sproc中发出第二个更新命令 - 但我们也试图摆脱sproc依赖关系并在c#中执行大多数操作

TIA

1 个答案:

答案 0 :(得分:0)

感谢所有人的上述答案。我按照建议调查了事件监听器,对于我们想要完成的事情来说,它似乎有点过于沉重。

由于我们正在使用存储库模式,并且意图是在模型中嵌入这种行为,我们最终将嵌入更新嵌入到头对象属性的setter中。由于这些类型的级联可能难以测试等,因此它允许我们在pocos中测试模型中的所有内容,而无需依赖SQL触发器或NHibernate。

简而言之,当在其setter中更新标题时,我会快速为for-each列出详细对象,并更新对象树中的任何其他非规范化pocos,然后将其放入数据库中,只需简单使用nHibernate进行saveorupdate。

-Bob