我有两个实体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首选)?
答案 0 :(得分:6)
所以@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>
(......我认为。欢迎编辑并澄清。)