NHibernate映射与中间表的一对多关系

如何在没有中间class PostTag创建的情况下定义映射? 我有三张桌子

 t_post(id...) t_tag(id, name) t_post_tag(id,post_id, tag_id) 

我希望在Post类型中有一个带有Tags的集合:

 class Post { public virtual IEnumerable Tags{ get; set; } } public class Tag { } 

映射:

      ...              

要映射配对表,没有显式实体来表示它,我们必须使用 。 还必须存在属性table="..." – 指示NHibernate关于该配对表。 (如果我们将标签分配到post中,我们不应该将这种映射标记为反向)

      

6.3。 价值观和多对多关联的集合

具有其自己的表的实体的集合对应于多对多关联的关系概念。 多对多关联是.NET集合中最自然的映射,但通常不是最好的关系模型。

  

(1)column(必需):元素外键列的名称。
(2)class(必需):关联类的名称。
(3)fetch(可选,默认为join):为此关联启用外连接或顺序选择提取。 这是一个特例; 对于实体的完全渴望获取(在单个SELECT中)及其与其他实体的多对多关系,您不仅可以启用集合本身的连接提取,还可以在上使用此属性嵌套元素。
(4)not-found(可选 – 默认为exception):指定如何处理引用缺失行的外键:ignore将缺少的行视为空关联。

6.8。 双向关联

双向关联允许从关联的“两端”导航。 支持两种双向关联:

  • one-to-many套装或包,一端为单值,另一端为单值
  • 两端都有many-to-many套装或包

23.2。 作者/工作 (包含完整示例)