使用错误的名称进行外键映射。为什么呢?
这是我的课程:
属性的顺序似乎很重要:
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)
提前感谢您的帮助;)
答案 0 :(得分:0)
我发现的解决方案是覆盖这样的配置:
AutoMap.AssemblyOf<Person>(new CustomAutomappingConfiguration())
.Override<Person>(m => m.HasMany<Item>(x => x.Items).KeyColumn("Patient_Id"))
是否存在让自动映射无缝工作的任何解决方案?以及Fluent nHibernate如何选择外键列的名称?