我不知道任何“开箱即用”的东西,但你可以创建一个NHibernate.Id.TableHiLoGenerator的实例(NHibernate用来生成id值)并用它来生成值。但是,您仍需要手动设置实体的生成值。
您也可以通过继承TableHiLoGenerator来创建自己的生成器:
public class MyHiLoGenerator : TableHiLoGenerator
{
private readonly ISessionFactory _sessionFactory;
public MyHiLoGenerator(ISessionFactory sessionFactory)
{
_sessionFactory = sessionFactory;
Configure(NHibernateUtil.Int64, new Dictionary {{"table", "mytable"}, {"column", "mycolumn"}}, ((SessionFactoryImpl) sessionFactory).Dialect);
}
public long NextValue()
{
return (long) Generate((ISessionImplementor) _sessionFactory.GetCurrentSession(), null);
}
}这只是一个没有经过测试的快速示例,但它仍然显示了如何使用TableHiLoGenerator的想法。我用这样的东西自己生成HiLo值。