NHibernate HiLo 在主键以外的列上

标签 nhibernate

任何人都遇到过在主键以外的列上实现 hilo 类型解决方案的方法。有一个像 jobno 这样的列,我不想成为主键(如使用 guidcomb 并对此感到满意),并且需要为其提供序列号,并且不想点击数据库来获取下一个值。

最佳答案

我不知道任何“开箱即用”的东西,但是您可以创建一个 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 值。

关于NHibernate HiLo 在主键以外的列上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11358435/

相关文章:

NHibernate 可重用 QueryOver

c# - NHibernate 3.0 和 LINQ : what am I missing?

c# - 从文件设置 Fluent NHibernate 的指南 - 新项目

nhibernate - 不知道如何在NHibernate中进行删除

c# - NHibernate 多对一还是我遗漏了什么?

c# - 在 nHibernate 中调试 "String or binary data would be truncated"错误

c# - NHibernate:在子集合中查找脏对象

Nhibernate Conformist 映射 "Unable to determine type..."

nhibernate - 将对象从基类转换为子类是否有效?

c# - NHibernate Validator 一个值或另一个