一对多映射和附加条件列不是外键的一部分
Posted
技术标签:
【中文标题】一对多映射和附加条件列不是外键的一部分【英文标题】:One to many mapping and additional condition column not part of a foreign key 【发布时间】:2013-11-18 21:55:21 【问题描述】:我正在尝试解决 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】:这实际上没有任何意义。
如果Training ID是PK,它是唯一的吧?那么如何为多种语言创建一个具有相同 ID 的培训呢?
意思是如果Training ID已经是唯一的了,为什么还要在Bag的条件下加上LanguageID?
如果您希望 Training.Id + Training.LanguageID 作为主键,您应该将其映射为复合键并在包中使用它,这应该可以。
不,据我所知,不支持您要求的内容,唯一的方法是定义一个过滤器并在运行时将其应用于您的查询。
【讨论】:
以上是关于一对多映射和附加条件列不是外键的一部分的主要内容,如果未能解决你的问题,请参考以下文章