【发布时间】:2015-06-08 13:33:07
【问题描述】:
更新 1:添加了实体类代码的链接。
我有一个 Vehicle 实体(用于保存有关车辆的信息)和一个
UploadedDocument 实体(代表任何上传的文档,在这种情况下(例如)注册文件)存储在数据库中的单独表中(其他实体可能也需要存储上传的文档)。它们之间是一一对应的。
映射:
<class name="Vehicle" table="Vehicles" lazy="true">
<id name="ID">
<generator class="native" />
</id>
<property name="License" />
<property name="ManufactureYear" />
<property name="PurchaseYear" />
<one-to-one name="Registration" class="UploadedDocument" />
</class>
<class name="UploadedDocument" table="UploadedDocuments" lazy="true">
<id name="ID">
<generator class="native" />
</id>
<property name="Name" />
<property name="Data" length="2147483647" />
<many-to-one name="SupplierCustomer" class="SupplierCustomer" column="SupplierCustomerID" />
</class>
Vehicle and UploadedDocument classes 的代码。保存这些类的代码如下所示:
using (ISession sess = NHibernateHelper.OpenSession())
{
sess.Save(uploadedDoc);
vehicleToAdd.Registration = uploadedDoc;
sess.Save(vehicleToAdd);
}
事情并没有像我期望的那样工作:NHibernate 没有为
UploadedDocument 到 Vehicles 表,因此没有
一对一的关系。
如果我只是在Vehicle.hbm.xml 文件中将我的<one-to-one> 映射更改为<many-to-one
name="Registration" class="UploadedDocument" column="RegistrationID" />,我可以让事情正常工作,但我不需要
双向映射或多对一。简单明了的一对一映射
其中RegistrationID 列出现在Vehicles 表中。做
NHibernate 没有提供简单的方法来创建它们之间的一对一关系
Vehicle 和 UploadedDocument?
【问题讨论】:
标签: c# nhibernate orm nhibernate-mapping