任何人都会遇到一种在除主键之外的列上实现 hilo 类型解决方案的方法。有一个像 jobno 这样的列,我不想成为主键(因为使用 guidcomb 并对此感到满意)并且需要为其提供一个序列号并且不想点击数据库来获得下一个值。
问问题
208 次
1 回答
2
我不知道任何“开箱即用”的东西,但是您可以创建 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<string, string> {{"table", "mytable"}, {"column", "mycolumn"}}, ((SessionFactoryImpl) sessionFactory).Dialect);
}
public long NextValue()
{
return (long) Generate((ISessionImplementor) _sessionFactory.GetCurrentSession(), null);
}
}
这只是一个简单的示例,根本没有经过测试,但它仍然展示了如何使用 TableHiLoGenerator 的想法。我自己用这样的东西来生成 HiLo 值。
于 2012-08-22T19:50:11.873 回答