一对多映射和附加条件列不是外键的一部分

时间:2013-11-18 21:55:21

标签: nhibernate orm nhibernate-mapping

我正在尝试解决XML映射问题。 我有两个视图基于一些表格。

Training
- Id int PK
- LanguageId int

Module
 - Id PK
 - TrainingId FK
 - LanguageId int

在两个视图中都设置了id的键。

我想在Training类中使用外键TrainingId构建一对多映射,包括不属于主键的列 - LanguageId。这是我现在拥有的xml的一部分。

    <bag name="Modules" inverse="true" cascade="none">
  <key>
    <column name="TrainingId"/>
  </key>
  <one-to-many class="Model.Domain.ModuleCategoryTranslationView" />
</bag>

我想在某种情况下包括Training.LanguageId = Module.LanguageId。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这实际上没有任何意义。

如果培训ID是PK,它是唯一的吗?那么如何为多种语言创建一个具有相同ID的培训呢?

如果训练ID已经是唯一的,那么为什么需要在Bag的条件下添加LanguageID?

如果您希望将Training.Id + Training.LanguageID作为主键,则应将其映射为复合键并在包中使用它,这应该可行。

不,据我所知,不支持你所要求的,唯一的方法是定义一个过滤器并在运行时将它应用于你的查询。