Buf*_*nOK 9 nhibernate fluent-nhibernate optimistic-locking staleobjectstate
我们正在尝试在抛出StaleObjectStateException之后组合对象以保存合并副本.
这是我们的环境状况:
使用案例:
我们希望优雅地处理异常.由于用户共享父级的所有权,因此用户1应该能够成功保存,并使用他的新孩子和用户2的孩子保存父级.
根据Ayende(http://msdn.microsoft.com/en-us/magazine/ee819139.aspx),当SOSE被抛出时:
您的会话及其加载的实体是toast,因为使用NHibernate时,会话抛出的异常会将该会话移动到未定义状态.您无法再使用该会话或任何已加载的实体
已经为现在没有用的会话分配了一个ID和版本号.(我希望它没有.)
我们如何结合使用ISession.Merge()和ISession.Refresh()来获得一个同时具有C1和C2的新保存的Parent?
我们已经尝试了许多奥术排列,其中没有一个完全奏效.通常,"行已被另一个事务更新或删除(或未保存的值映射不正确")或ODBC级别的实际ID冲突.
我们的理论,目前:
但是,所有文档都表明newSession.Merge 应该足够了.
用作研究的其他帖子:
Fluent NHibernate Newbie:Row被另一个事务更新或删除
是否有使用乐观锁定时不会抛出的ISession.Merge()的替代方法?
StaleObjectstateException行已更新或删除
如何告诉NHibernate只保存已更改的属性
Hibernate(JPA):如何在修改和提交多个对象时处理StaleObjectStateException(java,但相关,我认为)
由于用户共享父级的所有权,因此用户 1 应该能够成功保存,并保存父级及其新子级和用户 2 的子级。
为什么不在子集合上禁用乐观锁定呢?然后任何人都可以添加子级,并且不会增加父级的版本。
否则,这是我当前项目用于会话可能引发的所有可恢复异常的解决方案(例如,与数据库的连接丢失、外键违反等):
session.Flush()会话被序列化为MemoryStream.session.Flush()或transaction.Commit()引发可恢复的异常,则原始会话将被释放,并反序列化保存的会话。| 归档时间: |
|
| 查看次数: |
1592 次 |
| 最近记录: |