4

私には2つのエンティティがFooあり、次のBarようになります。

public class Foo
{
    public virtual Guid FooID { get; set; }
    public virtual Bar MyBar { get; set; }
}

public class Bar
{
    public virtual Guid BarID { get; set; }
    public virtual Foo MyFoo { get; set; }
}

これらのエンティティは両方とも互いに独立して存在できますが、場合によっては関連しているので、その場合は永続層でリンクされていることを確認したいと思います。

私のテーブルをこれに似せたい:

create table Foo (
    FooID int primary key,
    -- other stuff
);

create table Bar (
    BarID int primary key,
    FooID int null references Foo(FooID) on delete no action on update no action
);

...そしてNHibernateがそれらの間に関係を作成できるようにするため。

これをどのようにマッピングしますか(XMLを推奨)?

4

1 に答える 1

7

したがって、@ JBNizetは、彼の卑劣で皮肉な方法で、HibernateとNHibernateに関する限り、ゼロまたは1対ゼロまたは1の関係はnull許容の双方向の1対1の関係と見なされると指摘しました。したがって、http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#assoc-bidirection-121によると、マッピングは次のようになります。

<class name="Foo">
    <id name="FooID" column="FooID">
        <generator class="guid" />
    </id>
    <one-to-one name="MyBar" property-ref="MyFoo" />
</class>

<class name="Bar">
    <id name="BarID" column="BarID">
        <generator class="guid" />
    </id>
    <many-to-one name="MyFoo" column="FooID" unique="true" not-null="false" />
</class>

(...私は思います。説明付きの編集は大歓迎です。)

于 2012-06-24T21:44:35.170 に答える