【问题标题】:Fluent nHibernate - Wrong column name when self referenceFluent nHibernate - 自我引用时错误的列名
【发布时间】:2011-10-04 15:25:48
【问题描述】:

外键的映射使用了错误的名称。为什么?

这是我的课程:

属性的顺序似乎很重要

public class Person
{
  public virtual Person Mother { get; set; }
  public virtual IList<Item> Items { get; set; }
  public virtual Person Father { get; set; }
}
public class Item
{
  public virtual string Name { get; set; }
}

这是 Fluent Nhibernate 的映射

AutoMap.AssemblyOf<Person>(new CustomAutomappingConfiguration())

当我查看数据库时,表中的外键似乎是属性 Items 之后类型为 Person 的第一个属性的名称。这是为创建表而生成的 SQL:

CREATE TABLE "Item" (Id  integer primary key autoincrement
    , Name TEXT
    , Father_id BIGINT
    , constraint FKC57C4A2B4586680 foreign key (Father_id) references Patient)

提前感谢您的帮助;)

【问题讨论】:

    标签: fluent-nhibernate


    【解决方案1】:

    我找到的解决方案是像这样覆盖配置:

    AutoMap.AssemblyOf<Person>(new CustomAutomappingConfiguration())
        .Override<Person>(m => m.HasMany<Item>(x => x.Items).KeyColumn("Patient_Id"))
    

    是否存在让自动映射无缝工作的任何解决方案?以及 Fluent nHibernate 如何选择外键列的名称?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多