【问题标题】:Fluent NHibernate one-one mapping through additional tableFluent NHibernate 通过附加表进行一对一映射
【发布时间】:2010-10-10 16:39:23
【问题描述】:

我有一个表 A,它通过第三个表 C 引用了表 B。C 包含 A 和 B 的主键。对于每个 A,C 中最多有一条记录。当我尝试创建一个映射 A 以便我引用 B,我使用 References 函数,但它不允许我指定映射通过另一个表而不是直接通过。这样做的正确方法是什么?

【问题讨论】:

  • 表C存在有什么特殊原因吗?因为从 DB 设计来看,它看起来不像是一对一的映射。
  • 一个原因是它的遗留代码,另一个是为了防止主表(A)的列太多。

标签: nhibernate fluent mappings


【解决方案1】:

我知道的唯一可以做到这一点的映射是 A 映射中的 HasManyToMany :

HasManyToMany(x => x.B)
    .WithTableName("C")
    .WithParentKeyColumn("A_Id")  
    .WithChildKeyColumn("B_Id"); 

问题在于映射是针对具有 B 列表的 A,而不仅仅是一个。我不知道你怎么能做到以干净的方式只得到一个。

【讨论】:

    【解决方案2】:

    我相信我已经在 google 代码示例中找到了答案。在映射类中,可以多写一个:

    WithTable("SomeTable", c => { c.Map(x => x.Col1); });
    

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 1970-01-01
      • 2014-11-14
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      相关资源
      最近更新 更多