1

既存のデータベースでNHibernateを使用しようとしています。データベースは、ユーザー間の単方向の関係を記録します。

Users
    UserId              PK
    Name

Relationships
    RelationshipId      PK
    ParentId            FK:Users_UserId
    ChildId             FK:Users_UserId

NHibernateを使用してこれを表現したいと思います。現在、次のPOCOオブジェクトがあります。

class User {
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }

    public ICollection<User> ParentUsers {get; set;}
    public ICollection<User> ChildUsers {get; set;}
}

私もこのマッピングファイルを持っています:

<class name="User" table="Users">
    <id name="Id"></id>
    <property name="Name"></property>
</class>

ICollectionWebでガイドを見てきましたが、2つのプロパティを接続するためにマッピングファイルに何を入れる必要があるかがわかりません。

このデータ構造をどのようにマッピングする必要がありますか?私の現在のアプローチは正しいですか、それとも2番目のPOCOクラスを作成し、2つのmany-to-one関係を使用する方が良いですか?

4

1 に答える 1

2

私はおそらく何かが足りないのですが、これで始められるはずです:

<idbag name="ParentUsers" table="Relationships">
  <collection-id column="RelationshipId" type="...">
    <generator class="..."/>
  </collection-id>
  <key column="ChildId"/>
  <many-to-many column="ParentId" class="User"/>
</idbag>
<idbag name="ChildUsers" table="Relationships">
  <collection-id column="RelationshipId" type="...">
    <generator class="..."/>
  </collection-id>
  <key column="ParentId"/>
  <many-to-many column="ChildId" class="User"/>
</idbag>

また、コレクションの1つをとしてマークする必要がありますinverse

于 2012-09-10T23:08:43.180 に答える