Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在实体之间创建一对一关系_C#_Nhibernate_Orm_Nhibernate Mapping - Fatal编程技术网

C# 无法在实体之间创建一对一关系

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" /&

更新1:添加了指向实体类代码的链接

我有一个
车辆
实体(用于保存车辆信息)和一个
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