没有实体的表的Nhibernate映射

时间:2015-03-30 08:31:35

标签: c# nhibernate

我有一个名为Software&/ p>的表和实体


软件

  • Id
  • 串行
  • 名称
  • LinkedSoftware(此字段位于实体中)

然后我有一个没有实体的Table LinkedSoftware


LinkedSofware

  • BaseSoftwareId(与Software.Id的关系)
  • LinkedSoftwareId(与Software.Id的关系)

我正在努力设置我的hibernate映射文件,不断得到映射错误。 我试过以下没有运气:                            

<set name="linkedSoftware" access="field" cascade="all-delete-orphan" table="LinkedSoftware">
  <many-to-many class="Software" column="BaseSoftwareId" />
  <many-to-many class="Software" column="LinkedSoftwareId" />
</set>

<many-to-one name="LinkedSoftware" column="BaseSoftwareId"       cascade="save-update" class="Software" />
<many-to-one name="LinkedSoftware" column="LinkedSoftwareId" cascade="save- update" class="Software" />-->

有没有人可以指出我正确的方向。 我试着谷歌,但无法真正找到答案。

1 个答案:

答案 0 :(得分:1)

我认为你也应该将表LinkedSotware作为一个实体。然后尝试更像这样写set

 <set name="LinkedSoftware" table="LinkedSoftware">
  <key>
    <column name="BaseSoftwareId" />
  </key>
  <one-to-many class="LinkedSoftware" />
</set>

但不确定这是否就是一切,因为这会让您只设置LinkedSoftware实例,其Software实例为BaseSoftware。对不起我的英文,希望你理解。

然后在LinkedSoftware映射中:

<many-to-one name="BaseSoftware" class="Software">
<column name="BaseSoftwareId" />
</many-to-one>

<many-to-one name="LinkedSoftware" class="Software">
<column name="LinkedSoftwareId" />
</many-to-one>

NHibernate: Two foreign keys in the same table against same column可以帮到你。我会避免使用多对多,我认为这会更灵活。对于多对多解释,请参阅Nhibernate: How to represent Many-To-Many relationships with One-to-Many relationships?