Свободная блокировка Nhibernate Optimistick не работает - PullRequest
2 голосов
/ 14 октября 2011

В моем приложении я настроил приложение на использование стратегии, чтобы 2 разных разговора не работали с одними и теми же данными. Но не работает, я не знаю почему.

ПРОБЛЕМА:

1) User1: 
Retrive rowversion from database: 0x00000000001063B0
Do some modification
2) User2:
Retrive rowversion from database: 0x00000000001063B0
Do some modification
3) User1:
Update the data
New rowversion: 0x00000000001063B2
4) User2:
Update the data
Should trown a StaleObjectStateException, 
but the rowversion is updated to 0x00000000001063B4

КОНФИГУРАЦИЯ:

В моем приложении есть конфигурация Fluent Nhibernate:

public static ClassMap<T> RowVersionTracking<T>(this ClassMap<T> classMap) where T : DomainObject
    {
        classMap.OptimisticLock.Version();

        classMap
            .Version(x => x.RowVersion)
            .Column(DomainObject.VersionPropertyName)
            .CustomType("BinaryBlob")
            .CustomSqlType("timestamp")
            .Generated.Always()
            .UnsavedValue("null");


        return classMap;
    }

И когда я сохраняю, например, экземпляр CustomerOrder, который наследует это свойство:

Имеет в сопоставлениях:

...
   this.RowVersionTracking();
...

С наилучшими пожеланиями, Тито

...