有两个人和PersonDTO类和我使用NHibernate的到保存这些对象。就像我有一个用户一样,没有问题,只要另一个用户要更新另一个用户正在更新的对象。那么两者都可以更新同一个对象,并且由于它由另一个用户更新,所以更改将会丢失。我如何实现并发NHibernate的
为了实现cuncurrency我使用了两种方式,他们都面临着问题。
- 第一个解决方案:使用人构造更新对象
- 第二种方法:使用GetByID方法
第一种方法是用伟大的工作任何问题,但不幸的是,我没有足够的授权给负载人完全与它的依赖。所以我必须使用第二种方法。
在第二种方法中,当我设置(更新)版本直到最后一秒,但NHibernate使用其旧版本,以便我的更改将不适用。
请看下面的代码
负载的人通过ID
person = locator.PersonRepository.GetById(dto.Id);
Version字段是由新的值加载。但我需要从我PersonDTO对象
person.Version = dto.Version
设置在更新过程中NHibernate的传递旧值到SQL和我不并发性错误的脸。
我该怎么做才能以这种方式实现并发。 任何帮助appriciated。
你有没有配置Person.Version财产版本场你的映射? –
当然可以。第一种解决方案工作正确,但第二种方法是一个问题。 – Ehsan
我不明白这个问题。如果你在你的对象上正确配置了版本控制,NH应该为你处理并发冲突......? 你能再细说一下吗? –