0

私は自分のDBにいくつかのテーブルを持っています。

UserMatchCriteria
UserMatchLifestyle
UserHobby

最初の 2 つのテーブルにはユーザー ID ごとに 1 行のエントリがありますが、3 番目のテーブルには、ユーザーが選択した趣味に応じて 0 から 100 のエントリを含めることができます。

C# コードで、単一の UserMatchCriteria オブジェクト、単一の UserMatchLifestyle オブジェクト、および 0 個以上の UserHobby オブジェクトを含む IList コレクションを含む UserSearchDetails のようなオブジェクトを作成できるようにしたいと考えています。

私の問題は、ユーザーオブジェクトのすべてのユースケースでほとんど必要としない大きなオーバーヘッドであるため、ロードごとにユーザーテーブルをこれらにリンクする必要があることに結び付けたくないことです。DB テーブルが関連付けられていない UserSearchDetails オブジェクトに検索の詳細を個別にロードする必要があります。明らかに、NHibernate を使用して次のようなことを行うことができます。

<one-to-one name=UserMatchCriteria>
<one-to-one name=UserMatchLifestyle>
<bag name=Hobbies........... />

などですが、最初の選択をオフに実行し、UserId を提供するためのベーステーブルがないと、これらのエントリをどのコンテキストで使用するかわかりません。

UserId の PK を介して他のテーブルに結合するベース テーブルとして使用するために、UserId のエントリを 1 つだけ含む UserSearchDetails という別のテーブルを作成する必要がありますか?

または、私がここでやろうとしていることを達成する別の方法はありますか?

4

1 に答える 1

1

参照とバッグはデフォルトで遅延ロードされます。ユーザーのコンポーネントをマップできます

<component name="UserSearchDetails">
  <many-to-one>
  <many-to-one>
  <bag>
<component>
于 2012-04-18T07:06:29.437 に答える