Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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# 加入共享公共列但没有外键的NHibernate类_C#_Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# 加入共享公共列但没有外键的NHibernate类

C# 加入共享公共列但没有外键的NHibernate类,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,我有几个表要映射到类。这些表如下所示: Asset --------- AssetId AssetName Product --------- ProductId ProductName AssetId Disposal --------- DisposalId AssetId DisposalDate 基本上,我想做的是将Product表连接到AssetId上的Disposal表,这样我的产品就有了一个由asset连接的Disposal集合。我已经定义了以下映射,但NHibernate(

我有几个表要映射到类。这些表如下所示:

Asset
---------
AssetId
AssetName

Product
---------
ProductId
ProductName
AssetId

Disposal
---------
DisposalId
AssetId
DisposalDate
基本上,我想做的是将Product表连接到AssetId上的Disposal表,这样我的产品就有了一个由asset连接的Disposal集合。我已经定义了以下映射,但NHibernate(1.2)似乎忽略了包中定义的键列,并选择通过ProductId(即Product.ProductId=disposition.AssetId)将产品表连接到处置表。我不确定这是否是一个bug,或者我没有正确定义它,但是如果有人有办法做到这一点,我将非常感谢

  <class name="Product" table="Product" lazy="false">
    <id name="ProductId" column="ProductId" type="int">
      <generator class="native" />
    </id>
    <property name="ProductName" column="ProductName"/>
    <bag name="Disposals" fetch="join" >
      <key column="AssetId" foreign-key="AssetId/>
      <many-to-many class="Disposal"/>
    </bag>
  </class>


您是否已将您的处置映射到产品

您的模式不会将处置与产品关联起来。处置只能涉及资产,而不是产品


您的模式告诉我,一项资产有许多产品,而一项资产有许多处置。没有任何东西表明处置是针对特定产品的。

您是否已将处置映射到产品

您的模式不会将处置与产品关联起来。处置只能涉及资产,而不是产品

您的模式告诉我,一项资产有许多产品,而一项资产有许多处置。没有任何东西表明处置是针对特定产品的。

清洁方式:

  <class name="Product" table="Product" lazy="false">
    <id name="ProductId" column="ProductId" type="int">
      <generator class="native" />
    </id>
    <property name="ProductName" column="ProductName"/>
    <many-to-one name name="Asset" class="Asset" column="AssetId" />
  </class>

  <class name="Asset">
    <id name="AssetId" >
      <generator class="native" />
    </id>
    <property name="AssetName" />
    <bag name="Disposals">
      <key column="AssetId" />
      <many-to-many class="Disposal" />
    </bag>
  </class>

外键用于DDL,我认为它是模式导出生成的外键约束的名称

您可以尝试property ref,但不能完全确定它是否有效:

  <class name="Product" table="Product" lazy="false">
    <id name="ProductId" column="ProductId" type="int">
      <generator class="native" />
    </id>
    <property name="ProductName" column="ProductName"/>
    <property name="AssetId" />
    <bag name="Disposals" fetch="join" >
      <key column="AssetId" property-ref="AssetId/>
      <one-to-many class="Disposal"/>
    </bag>
  </class>

清洁方式:

  <class name="Product" table="Product" lazy="false">
    <id name="ProductId" column="ProductId" type="int">
      <generator class="native" />
    </id>
    <property name="ProductName" column="ProductName"/>
    <many-to-one name name="Asset" class="Asset" column="AssetId" />
  </class>

  <class name="Asset">
    <id name="AssetId" >
      <generator class="native" />
    </id>
    <property name="AssetName" />
    <bag name="Disposals">
      <key column="AssetId" />
      <many-to-many class="Disposal" />
    </bag>
  </class>

外键用于DDL,我认为它是模式导出生成的外键约束的名称

您可以尝试property ref,但不能完全确定它是否有效:

  <class name="Product" table="Product" lazy="false">
    <id name="ProductId" column="ProductId" type="int">
      <generator class="native" />
    </id>
    <property name="ProductName" column="ProductName"/>
    <property name="AssetId" />
    <bag name="Disposals" fetch="join" >
      <key column="AssetId" property-ref="AssetId/>
      <one-to-many class="Disposal"/>
    </bag>
  </class>