0

这是我的简单情况:对于大多数企业来说很常见......

  • 假设我们有由Items组成的Orders 。[ 亲子]
  • 系统中有 2 个用户:UserA 和 UserB
  • UserA 创建一个包含 3 个项目的订单。并将其保存到数据库中。
  • 同时UserB打开UserA之前保存的Order来读取Items of Order。
  • 然后 UserA 从 Orders 中删除 Item 1 并保存。一切都好
  • 最后 UserB 删除第 3 项并尝试保存...

NHibernate 给出“StaleObjectStateException”...

那么如何处理这种情况,以便删除 İtem1 和 Item3 并且我们没有“StaleObjectStateException”......使用 NHibernate?

4

1 回答 1

2

我认为您应该捕获异常并让用户知道该项目已被其他人更新,从数据库重新加载实体并让用户在检查新数据后决定要做什么。

如果您不想让用户同时编辑同一个实体,您也可以使用悲观锁定。

查看NHibernate 文档以获取有关并发控制策略的更多信息。

Ayende Rahien 的这篇文章也是一个很好的参考。

于 2012-06-12T15:32:21.983 回答