0

私は NHibernate 3.3.2 を (初めて) 使用しており、ID が一意のテーブル/エンティティ識別子であり、シーケンスがグループごとの一意の ID になるように、次のテーブルを作成しようとしています。 、232 および 444 はグループです。

ID Club Sequence
1  123  1
2  123  2
3  232  1
4  232  2
5  444  1
6  123  3

挿入物をクラブ カテゴリだけにしたいのですが、両方の ID が自動的に設定されます。

これはできますか?もしそうなら、どうすればそれを行うことができますか?

4

2 に答える 2

1

質問が次のような場合:

このパターンに従ってシーケンス列の値を生成する最も良い方法は何ですか?

次に、いくつかのヒントを示します。

  • DB にシーケンス列を生成させるには、トリガー ベースのソリューションを検討する必要があると思います。あなたが話す「グループ」は、それを処理するための(SQL-)コードを作成しない限り、DBにとって何の意味もありません。数値を生成してから INSERT トリガーを生成するストアド プロシージャを作成することもできます。

  • NHibernate は、INSERT の列を無視し、DB によって生成された値を読み戻すように指示できます。Hibernate リファレンスの生成されたプロパティを参照してください。

  • 説明する構造は、 Id 列を削除した場合に NHibernate のリストのマッピングが生成するものと似ています。コレクションは常に何かによって所有されているため、Club が所有するコレクションがある場合は、これが解決策になる可能性があります。Club 列はコレクションの所有者を指し、Sequence はリスト内のインデックスになります。(テーブルにはより多くの列が含まれているはずであり、それがリスト内の要素になると想定しています。)

あなたがする必要があるのは、どのオブジェクトモデルがあなたの問題にとって意味があるかを考えることだと思います. 次に、それに合わせてテーブルを設計します。NHibernate は既存のレガシー テーブル モデルの処理に優れていますが、ゼロから始める場合は、最初にモデルを作成するのが理にかなっています。

于 2013-02-18T07:53:28.553 に答える
0

挿入を実行する場合に最大シーケンスを生成する式をプロパティ マッピングで指定することができます。または、存在しない場合は、エンティティを変更してシーケンス番号を生成することもできます。

于 2013-02-20T19:24:51.577 に答える