4

我有两个实体,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 而言,零或一到零或一的关系被认为是可以为空的双向一对一关系;因此,根据http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#assoc-bidirectional-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 回答