0

基本的に、私はこの質問と同じことをしようとしていますが、FluentNHibernateを使用しています。

これが私のID生成規則です:

    public class IdGenerationConvention : IIdConvention
    {
            public void Apply(IIdentityInstance instance)
            {
                    instance.GeneratedBy.HiLo("1000");
            }
    }

これでうまく機能しますが、すべてのクラスで同じを使用することになりnext_hiます。

    create table hibernate_unique_key (
            next_hi INTEGER 
    )

各クラスが独自のクラスを使用するように指定する方法を知っている人はいますnext_hiか?

明確にするために、列に基づいて機能すると仮定するcustomer_next_hiと、とのようなものになりたいと思います。order_next_hi行ベースの場合は、各エンティティがその値に使用する行を知っていれば、それでも問題ありませんnext_hi

4

3 に答える 3

1

この問題に対する優れた解決策が、Anthony Dewhirtのブログに投稿されています:http ://www.anthonydewhirst.blogspot.co.uk/2012/02/fluent-nhibernate-solution-to-enable.html

于 2012-09-10T09:50:33.283 に答える
0

Fluent NHibernate Googleグループでもこの質問をしましたが、これを行う唯一の方法は、HiLoまたはTableGeneratorから継承するカスタムIDジェネレータークラスを作成することであるようです。私が収集した重要な問題は、シードテーブルを作成するSQLステートメントが1回だけ実行され、エンティティ固有の列または行を作成するための組み込みのオーバーライドまたはフックがないことです。

だから、これに沿った何かが私がしなければならないことです。実装が機能したら、さらに投稿します。

于 2009-09-15T18:25:12.350 に答える
0

面白い質問ですが、なぜやりたいのかしら?(かなりマイナーな)欠点として、より多くのdbリクエストを生成することになります。逆に、代理IDスペースを何らかの要因で増やすことになります。しかし、Long / BigIntは、それらすべてを組み合わせるのに十分ではありませんか?(最大18,446,744,073,709,551,615 ID!)

于 2009-09-17T11:58:47.697 に答える