Fluent NHibernate 约定:OptimisticLock.Is(x => x.Version()) 不起作用
Fluent NHibernate Conventions : OptimisticLock.Is(x => x.Version()) doesn't work
我在使用 OptimisticLock 作为约定时遇到问题。
但是,在 Individual ClassMap 中使用 OptimisticLock 效果很好。它抛出陈旧状态对象异常。
每个 Class 对应于数据库中的 Table 都有一个 属性 (对应于 Table 中的一个列)我正在尝试的 DateTime 类型使用 OptimisticLock.Version().
进行锁定
只有当我在每个Class地图中使用它时它才有效,我不想写那么多Class地图,而是想使用自动映射。
它在 Class 地图中是这样工作的
Version(x => x.UpdTs).Column("UPD_TS");
OptimisticLock.Version();
所以,我开始使用下面的约定,但它不起作用。
OptimisticLock.IsAny(x => x.Version());
我尝试设置 DynamicUpdate 等。似乎对我没有任何作用。
请帮忙 !
这是我使用约定让它工作的方法:
/// <summary>
/// Class represents the Convention which defines which Property/Column serves as a part of the Optimistic Locking Mechanism.
/// </summary>
public class VersionConvention : IVersionConvention, IVersionConventionAcceptance
{
public void Accept(IAcceptanceCriteria<IVersionInspector> criteria)
{
criteria.Expect(x => x.Name == "%COLUMN_NAME%");
}
/// <summary>
/// Method applies additional overrides to the <see cref="IVersionInstance"/>
/// </summary>
/// <param name="instance"><see cref="IVersionInstance"/></param>
public void Apply(IVersionInstance instance)
{
instance.Column("%COLUMN_NAME%");
}
}
%COLUMN_NAME% 以上是 属性 用于锁定使用版本。
然后在创建 FluentConfiguration 对象时指定 Version 应该用于乐观锁定,如下所示
OptimisticLock.Is(x => x.Version();
我在使用 OptimisticLock 作为约定时遇到问题。 但是,在 Individual ClassMap 中使用 OptimisticLock 效果很好。它抛出陈旧状态对象异常。
每个 Class 对应于数据库中的 Table 都有一个 属性 (对应于 Table 中的一个列)我正在尝试的 DateTime 类型使用 OptimisticLock.Version().
进行锁定只有当我在每个Class地图中使用它时它才有效,我不想写那么多Class地图,而是想使用自动映射。
它在 Class 地图中是这样工作的
Version(x => x.UpdTs).Column("UPD_TS");
OptimisticLock.Version();
所以,我开始使用下面的约定,但它不起作用。
OptimisticLock.IsAny(x => x.Version());
我尝试设置 DynamicUpdate 等。似乎对我没有任何作用。 请帮忙 !
这是我使用约定让它工作的方法:
/// <summary>
/// Class represents the Convention which defines which Property/Column serves as a part of the Optimistic Locking Mechanism.
/// </summary>
public class VersionConvention : IVersionConvention, IVersionConventionAcceptance
{
public void Accept(IAcceptanceCriteria<IVersionInspector> criteria)
{
criteria.Expect(x => x.Name == "%COLUMN_NAME%");
}
/// <summary>
/// Method applies additional overrides to the <see cref="IVersionInstance"/>
/// </summary>
/// <param name="instance"><see cref="IVersionInstance"/></param>
public void Apply(IVersionInstance instance)
{
instance.Column("%COLUMN_NAME%");
}
}
%COLUMN_NAME% 以上是 属性 用于锁定使用版本。
然后在创建 FluentConfiguration 对象时指定 Version 应该用于乐观锁定,如下所示
OptimisticLock.Is(x => x.Version();