流畅的nHibernate - 自引用时列名错误

时间:2011-10-04 15:25:49

标签: fluent-nhibernate

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

这是我的课程:

属性的顺序似乎很重要

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)

提前感谢您的帮助;)

1 个答案:

答案 0 :(得分:0)

我发现的解决方案是覆盖这样的配置:

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

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