2

単方向の 1 対 1 の関係を持つ 2 つのアイテム A と B があります。(A には B が 1 つあります)

データベースでは、これらは ATable と BTable で表され、ABTable でリンクされています。(データベースのセットアップから、多対多の関係があるように見えますが、そうではありません。正規化の理由でこのように行われました)。

問題はこの設定によるものです。エンティティ間の多対多の関係として NHibernate をマップすることしかできませんでした。エンティティに1対1の関係を持たせる方法はありますか?

私が考えることができる最善の方法は、多対多の関係を持っているままにして、AエンティティにBのリストを返す2つのプロパティを持ち、マッピングを満たす2番目のマップされていないプロパティを取得することです私のアプリケーションを満たすために、リストの最初のB。-しかし、これはエレガントではないようです。

4

2 に答える 2

1

本当に一対一ですか?本当は多対 1 のことを意味しているのに、1 対 1 のことを求める人が非常に多くいます。

とにかく、スキーマを変更しない限り、最も簡単なのはあなたが提案したことです。ただし、少しわかりやすくするために、コレクションを非公開にして、最初の項目をフェッチする 2 つのプロパティのみを公開することができます。wikiでプライベート プロパティをマッピングするための Fluent NHibernateのさまざまなメソッドを確認できます。

于 2009-03-03T21:02:31.303 に答える
0

join-tableさまざまな方法で withone-to-oneマッピングを組み合わせてみてください。マッピングにより、 1join-table対 1 の関係を持つ複数のテーブルにわたって単一のクラスを永続化できます。

于 2009-03-03T17:21:38.480 に答える