C# 无法在实体之间创建一对一关系
更新1:添加了指向实体类代码的链接 我有一个C# 无法在实体之间创建一对一关系,c#,nhibernate,orm,nhibernate-mapping,C#,Nhibernate,Orm,Nhibernate Mapping,更新1:添加了指向实体类代码的链接 我有一个车辆实体(用于保存车辆信息)和一个 UploadedDocument实体(表示任何上传的文档,在这种情况下(比如)注册文件)存储在数据库中的单独表格中(其他实体可能也需要存储上传的文档)。它们之间有一对一的对应关系 映射: <class name="Vehicle" table="Vehicles" lazy="true"> <id name="ID"> <generator class="native" /&
车辆
实体(用于保存车辆信息)和一个
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>
事情并不像我期望的那样:NHibernate没有为其添加ID字段
上传文档
到车辆
表,因此没有
一对一的关系
如果我只需在Vehicle.hbm.xml
文件中将
映射更改为
,我就可以让事情正常进行,但我不需要
双向映射或多对一映射。只是简单的一对一映射
其中,RegistrationID
列出现在Vehicles
表中。做
NHibernate没有提供简单的方法来创建
Vehicle
和UploadedDocument
?您需要在
标签中设置外键,否则,NHibernate会通过两个实体的ID连接它们。
如果要通过cretain列将主实体(车辆)连接到另一个实体(通过其ID),则需要添加外键属性并声明连接列
<one-to-one name="Registration" class="UploadedDocument" foreign-key="RegistrationID" />
您需要在
标记中设置一个外键,否则,NHibernate将通过它们的ID连接这两个实体。
如果要通过cretain列将主实体(车辆)连接到另一个实体(通过其ID),则需要添加外键属性并声明连接列
<one-to-one name="Registration" class="UploadedDocument" foreign-key="RegistrationID" />
找到了正确的方法:使用带有添加的
唯一约束的映射:
<many-to-one name="Registration" class="UploadedDocument"
column="RegistrationID" unique="true" />
进一步参考:找到了正确的方法:使用带有添加的唯一约束的
映射:
<many-to-one name="Registration" class="UploadedDocument"
column="RegistrationID" unique="true" />
进一步参考:尝试了此操作,但未添加注册ID
列尝试了此操作,但未添加注册ID
列尝试了此操作,但未添加注册ID
列