2

私のアプリケーションでは、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

構成:

私のアプリケーションには、FluentNhibernate構成があります。

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();
...

よろしく、ティト

4

0 に答える 0