【发布时间】:2015-07-17 08:38:46
【问题描述】:
假设,有一个实体:
class Book
{
public Guid ID { get; set; }
public int Version { get; set; }
public string Author { get; set; }
public string Title { get; set; }
}
适当的 Fluent NHibernate 映射:
class BookMapping : ClassMap<Book>
{
public BookMapping()
{
Id(x => x.ID).GeneratedBy.GuidComb();
Version(x => x.Version);
Map(x => x.Author);
Map(x => x.Title);
}
}
我想在IStatelessSession.Update() 方法调用Book 实例后获取Version 属性的增量值,以执行另一个实体的相关更新(见评论):
using (var session = sessionFactory.OpenStatelessSession())
{
using (var transaction = session.BeginTransaction())
{
session.Update(book);
// Is it safe to use the value of the book.Version property here?
//
// Just for example:
// bookReference.ID = book.ID;
// bookReference.Version = book.Version; // I would like to have the latest (incremented) version here.
// session.Insert(bookReference);
transaction.Commit();
}
}
目前调试显示它可以正常工作。
但我没有找到说明这种行为的文档,即在IStatelessSession.Update() 方法调用之后增加版本值,由 NHibernate 保证。
- 能否提供相应官方文档的参考?有这样的保证吗?
- 在调用
ITransaction.Commit()方法之前,哪些方法会导致Version值增加?
【问题讨论】:
标签: c# nhibernate fluent-nhibernate