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 已经被其他事务更新,这将无法更新并抛出异常。在异常情况下,您应该能够重新加载并重试。
确保在重试时使用新会话。
我在我的项目中使用(流利的)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 已经被其他事务更新,这将无法更新并抛出异常。在异常情况下,您应该能够重新加载并重试。
确保在重试时使用新会话。