主キー以外の列に hilo 型のソリューションを実装する方法に誰もが遭遇します。主キーになりたくない(guidcombを使用してそれに満足している)jobnoのような列があり、それに連続番号を付ける必要があり、次の値を取得するためにdbにアクセスしたくない。
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 に答える