nhibernate乐观锁定/处理staleobject异常

时间:2013-05-25 16:47:29

标签: c# nhibernate concurrency

我在对象树中有一个对象,它由nhibernate乐观锁定功能“保护”。

如果我捕获事务提交中发生的staleobjectexception,我必须手动遍历树,但如果事务附加提交了一些独立的对象 - 这些对象丢失了...... :(

两者都让我相信架构中的错误

但是什么是正确的方法?

每个对象树的单个事务,不要在staleobjectexception上构建冲突处理,......?

我对目前的做法感觉不好......

1 个答案:

答案 0 :(得分:0)

我想追加我的观点,我的经历。

(所以它不一定是你问题的答案)。我喜欢你/我们确实质疑我们自己的代码,我们自己的设计/架构 - 这是一个好的标志。不好的是,如果我们省略......

有错误吗?

以下是一组规则,应遵循这些规则:Best Coding Practices

其中一个是(摘录):

Keep the code simple

  

程序员编写的代码应该很简单。复杂的逻辑   为了实现简单的事情应该保持在最低限度   代码可能会被另一个程序员修改。逻辑   一个程序员实施可能对另一个程序员没有完全意义。所以,   始终保持代码尽可能简单

换句话说:如果它看起来不是很好的架构,那就不是了。如果你不喜欢它,其他人也不会喜欢它。

版本控制,如何(建议)

嗯,下面我说了一些常见的方法,我们确实适用于版本控制。

  • 版本控制仅对Business对象有用(对象不应超过域中所有对象的20%)。其他(代码列表,如货币,国家......)未进行版本控制。
  • 每个对象都有自己的树管理(CRUD操作)。在这种情况下,只有这个 root 对象被版本化。例如。如果Address只能与Person存在,则在一个walkthroug(创建或修改Person)期间存储这两个对象。只有人有版本

就是这样。真的,没有什么比这更复杂了。但我确实理解,如果这不能回答你的问题......我只是想将我的意见添加到这个讨论中。