【发布时间】:2010-12-18 04:14:00
【问题描述】:
我正在尝试将 NHibernate 与未使用 NHibernate 映射的旧实体一起使用。有时这意味着我需要手动将 NHibernate 数据刷新到数据库,这样当我尝试将遗留实体与 NHibernate 映射的实体连接时,我不会收到外键异常。
当这发生在需要回滚的事务中时,就会出现问题。从 NHibernate 刷新的数据不会回滚。
对此我有什么办法吗?
更新
仍然很好奇如何做到这一点 - 我不相信给出的任何一个答案都解决了这个问题。我需要调用 Flush()。问题是,如何回滚已经刷出的数据?
【问题讨论】:
-
请告诉我为什么投反对票?当前的答案很好,但不能解决问题 - 我需要能够刷新到数据库,以便非 NHibernate 托管查询可以访问 NHibernate 中已更新的数据。如果我不能调用刷新,非 NHibernate 托管查询还能如何访问数据?想象一下,自己使用简单的 System.Data.SqlClient 调用来做这件事——这将非常简单:将一堆 SqlCommand.ExecuteUpdate() 调用包装在 TransactionScope 中,仅此而已。您可以嵌套事务、回滚它们等,一切都会按预期运行。
标签: nhibernate transactions flush