回答

0

似乎没有任何方法可以在会话之间安全地合并实体,至少在乐观锁定的情况下。

我正在采用另一种模式:每个会话都有自己的每个实体的副本,并根据需要在每个会话中使用我的refresh()实例。这增加了内存使用和往返数据库的开销,但似乎可行。

-1

尝试调用:

Session.Lock(string entityName, object obj, LockMode lockMode); 

与LockMode.Force。该方法的状态备注:

这可以被用来执行版本检查 (NHibernate.LockMode.Read),升级到一个悲观锁 (NHibernate.LockMode.Upgrade),或简单地重新关联一个带有会话的暂时的 实例(NHibernate.LockMode.None)。如果关联映射为 cascade =“lock”,此操作 级联到关联的实例。

而对于LockMode.Force:

除了类似NHibernate.LockMode.Upgrade,对于版本 实体,它会导致强迫版本增量。

+0

文档和litterature else让我认为LockMode.Force将强制写一个新的版本到数据库,而不是得到最新的状态......我会看看我可以用它做什么。 –

+0

确认后,LockMode.Force强制NHibernate发送SQL更新,这与我在这里想要的相反。 –