2

データベースに記事とタグの2つのテーブルがあります

タグテーブルは、ArticleID(外部キー)とタグ(varchar)で構成されています。

次に、IListタグまたはReadOnlyCollectionタグを使用して、ArticleタグをArticleエンティティの読み取り専用コレクションにマップする必要があります。

NHibernateの参考資料を調べましたが、Set、Bag、およびその他のNhibernateコレクションをいつ使用するかがわかりません。ISetコレクションを使用した例を見てきましたが、エンティティクラスをNHibernateタイプに関連付けるのは本当に好きではありません。

NHibernateでマッピングを行うにはどうすればよいですか?

編集:<bag>インデックスを必要としないため、代わりに使用することになりました:

<bag name="Tags" table="Tag" access="nosetter.camelcase" lazy="false">
  <key column="ArticleId" />
  <element column="Tag" type="System.String" />
</bag>
4

1 に答える 1

5

マッピングで使用するコレクションのタイプは、コードでコレクションをどのように表現するかによって異なります。設定は次のようにマップされます。

  • <list>IListに直接マップします。
  • <map>IDictionaryに直接マップします。
  • <bag>IListにマップします。Add()メソッドが正しいインデックスを返すことが保証されていないため、AはIListインターフェイスに完全には準拠していません。<bag>IListを初期化せずに、オブジェクトをに追加できます。APIのコンシューマーからIListを非表示にするか、十分に文書化してください。
  • Iesi.Collections.ISet<set>にマップします。そのインターフェースは、NHibernateとともに配布されるIesi.Collectionsアセンブリの一部です。

したがって、IListを返す場合は、<list>マッピングを使用します。あなたの場合、私はおそらくマッピングを使用して<list>マッピングします。

于 2008-09-08T05:57:37.000 に答える