Nhibernate を ORM として使用して、ソーシャル ネットワーク タイプのシナリオを試しています。
User テーブルと Friend テーブルがあります。
User Table
----------
UserID
FirstName
LastName
Email
Friend Table
-------------
UserID
FriendUserID
AddedDateTime
これは、Friend テーブルで、次のような多対多のレコードを持つことができることを意味します。
A - B (A initiated a friend request to B, accepted)
A - C (A initiated a friend request to C, accepted)
B - C
D - A (D initiated a friend request to A, accepted)
B - E
A に対して userObject.Friends を呼び出すと、B、C、および D がユーザー オブジェクトとして返されるように、Nhibernate プロパティを設定するにはどうすればよいですか。
ユーザー オブジェクトの xml をマッピングしています...
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Namespace.Data.Entities.User,Namespace.Data.Entities" table="`User`" lazy="true">
<id name="UserId" column="`UserId`" type="Guid">
<generator class="assigned" />
</id>
<property type="string" length="150" name="FirstName" column="`FirstName`" />
<property type="string" length="150" name="LastName" column="`LastName`" />
<property type="string" not-null="true" length="256" name="Email" column="`Email`" />
<bag name="UsersFriends" inverse="true" lazy="true" cascade="all">
<key column="`UserID`" />
<one-to-many class="Namespace.Data.Entities.Friend,Namespace.Data.Entities" />
</bag>
<bag name="FriendsofUser" inverse="true" lazy="true" cascade="all">
<key column="`FriendUserID`" />
<one-to-many class="Namespace.Data.Entities.Friend,Namespace.Data.Entities" />
</bag>
</class>
</hibernate-mapping>
とFriendオブジェクト...
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Namespace.Data.Entities.Friend,Namespace.Data.Entities" table="`Friend`" lazy="true">
<id name="Id" column="`ID`" type="int">
<generator class="native" />
</id>
<property type="DateTime" not-null="true" name="AddedDateTime" column="`AddedDateTime`" />
<many-to-one name="User" cascade="none" column="`UserID`" not-null="true" />
<many-to-one name="FriendUser" cascade="none" column="`FriendUserID`" not-null="true" />
</class>
</hibernate-mapping>