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

配置:

我的应用程序中有 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();
...

最好的问候,铁托

4

0 回答 0