3

私は nhibernate 3.3.1 と fluent-nhibernate 1.3 を使用しています。次のエンティティを流暢にマップしようとしています:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Person> Relations { get; set; }
}

ご覧のとおり、私の人物は他の人物と関係があります。そこで、DB テーブルを次のようにモデル化しました。

    | Persons
----+----------------------
 PK | Id int
    | Name nvarchar(100)

    | Relations
----+----------------------
 PK | Id int
 FK | Person1Id int
 FK | Person2Id int

したがって、実際の人物が Person1Id または Person2Id として参照されているかどうかに関係なく、人物の関係が読み込まれるマッピングが必要です。

これは流暢で可能ですか?そうでない場合、hbn.xml マッピング ファイルで可能ですか?

助けてくれてありがとう、コライ

4

1 に答える 1

0

直接マップすることはできません。次の 2 つのプロパティを作成する必要があります。

public virtual IList<Person> Relations1 { get; set; }
public virtual IList<Person> Relations2 { get; set; }

次に、それらをマージする射影プロパティを作成します。

public virtual IEnumerable<Person> Relations
{
    get { return Relations1.Concat(Relations2); }
}

(最初の部分のやり方は知っていると思います。知らない場合は教えてください)

于 2012-07-01T21:18:14.500 に答える