NHibernate - 检查实体是否超出 date/sync

NHibernate - Check if entitiy is out of date/sync

我在我的项目中使用(流利的)nhibernate。假设我存储了一个瞬态实体 A。然后在某个时候,更新与该实体相关的部分数据存储。

有没有办法知道实体 A 不在 date/sync 中,以便我可以继续刷新它?

通常 version 列用于确定,它可以是一个数字,每次持久化都会更新该数字,或者它可以是 datetime 最后一次持久化时间的存储位置.

更新实体时更新版本列,假设实体 A,

class A
{
   int Id { get; set; }
   int Version { get; set; }
   string Name { get; set; }
}

class AMap : ClassMap<A>
{
   public AMap()
   {
      Id (x => x.Id).GeneratedBy.Native();
      Version (x => x.Version);
      Map(x => x.Name);
   }
}

更新实体 A 时生成的 SQL 喜欢,

update A set.... where Id = ? and Version = ?

所以,如果 A 已经被其他事务更新,这将无法更新并抛出异常。在异常情况下,您应该能够重新加载并重试。

确保在重试时使用新会话。