gpt4 book ai didi

c# - 多线程中 SaveOrUpdate 上的 NHibernate TransientObjectException

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:27 26 4
gpt4 key购买 nike

我的应用程序通过套接字连接接收频繁的远程事件,每次都启动一个新线程,后续操作通常每次都会触发相同的对象图进行保存,并带有一个锁定的静态 session 。但是在执行保存时,有时会收到新的更新,这会将新元素添加到同一对象图中。我认为这是异常(exception)的原因:

TransientObjectException
object references an unsaved transient instance -
save the transient instance before flushing.

如果是这个原因,那是可以理解的。但是我如何防止这种异常呢?如果我让事务回滚,后续异常会发生,如 StaleStateObject,然后是 NonUniqueObjectException。

那么如何处理或预防这种情况呢?

最佳答案

有两种方法可以防止错误:

  • Save()手动新建引用对象
  • 为关系设置适当的cascade设置,所以上面的事情会自动发生(我个人更喜欢这个)

当然,完全有可能在您打算引用现有对象时创建新对象,或者即使使用锁也存在线程问题。

关于c# - 多线程中 SaveOrUpdate 上的 NHibernate TransientObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11655302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com