Fluent NHibernate约定:OptimisticLock.Is(x=>;x.Version())不';行不通
我在使用OptimisticLock作为惯例时遇到问题。 然而,在单个类映射中使用OptimisticLock可以很好地工作。它抛出过时的状态对象异常 与数据库中的表相对应的每个类都有一个DateTime类型的属性(对应于表中的一列),我正试图使用它来使用OptimisticLock.Version()进行锁定 只有当我在每个类映射中使用它时,它才起作用,我不想写那么多类映射,而是想使用自动映射 它在类映射中是这样工作的Fluent NHibernate约定:OptimisticLock.Is(x=>;x.Version())不';行不通,nhibernate,fluent-nhibernate,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Fluent Nhibernate Mapping,我在使用OptimisticLock作为惯例时遇到问题。 然而,在单个类映射中使用OptimisticLock可以很好地工作。它抛出过时的状态对象异常 与数据库中的表相对应的每个类都有一个DateTime类型的属性(对应于表中的一列),我正试图使用它来使用OptimisticLock.Version()进行锁定 只有当我在每个类映射中使用它时,它才起作用,我不想写那么多类映射,而是想使用自动映射 它在类映射中是这样工作的 Version(x=>x.UpdTs).Column(“UPD_TS”);
Version(x=>x.UpdTs).Column(“UPD_TS”);
OptimisticLock.Version()代码>
所以,我开始使用下面的约定,但它不起作用。
我试着设置日期等等。似乎没有什么对我有用。
请帮忙 以下是我使用约定使其工作的方法:
/// <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%");
}
}
/// <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%");
}
}
OptimisticLock.Is(x => x.Version();