(流畅)NHibernate进展事件的冗长交易?

event-listener fluent-nhibernate progress-indicator sqlbulkcopy

我们已经连接了ISaveOrUpdateEventListener事件,希望我们可以将它绑定到一个非常大的模型的保存遍历期间访问的每个节点的进度条更新,但事件只在保存操作开始时触发一次(仅在节点上)在其上启动Save()而不是在任何子节点上。

还有其他更合适的事件可以听吗?

我们也尝试通过自己进行遍历来分解保存操作(分层模型),但这似乎进一步降低了性能。

也许我们正试图解决FNH无意使用的问题。我们是新手。

我们还使用SqlBulkCopy设置了另一种解决方案,如其他地方所推荐的那样。

我们已经看到FNH主要用于较小事务(OLTP)的注释,而不是我们的问题(大量数据的信号处理)所限制的穷举模型的类型。

背景:

我们试图在一个更大的数据库项目上使用Fluent NHibernate,其数据来自相当复杂的实时分析(高频,多输入信号,长实验时间等)。在我们构建的原型中,我们看到目前非常可怕的等待时间,并需要挂钩某种可靠的进度指示器。

一般承认的答案

是的,现在已经确认 - 正如我上面的评论所述。一个(可能的)解决方案是简单地转动Cascades并手动执行模型遍历并执行显式Save()调用。

这有效,虽然它不像处理事件那样整洁。尽管如此,考虑到NHibernate的genuin设计,我打赌肯定会有一个可能被截获的事件 - 问题就在于什么名字。 ...我打赌这里有人知道更多。

同样为了提高性能,我们使用了无状态会话,体验了不同的批量大小,并定期/显式调用Flush()和Clear()。有关详细信息,请参阅以下文章

http://davybrion.com/blog/2008/10/bulk-data-operations-with-nhibernates-stateless-sessions/

http://ideas-net.blogspot.com/2009/03/nhibernate-update-performance-issue.html

希望这可以帮助。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因