Fluent nHibernate - 自引用时列名错误

发布于 2024-12-08 06:09:15 字数 780 浏览 1 评论 0原文

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

这是我的类:

属性的顺序似乎很重要

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)

提前感谢您的帮助;)

The mapping on foreign key are made with the wrong name. Why?

Here's my classes:

The order of the properties seems to be important:

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; }
}

Here's the mapping with Fluent Nhibernate

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

When I look to the database, the foreign key in the table seems to be the name of the first property with the type Person after the property Items. Here's the SQL generated to create the table:

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

Thank you in advance for your help ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

椒妓 2024-12-15 06:09:16

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

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

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

The solution I've found is to override the configuraton like this:

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

Does exist any solution to let the auto mapping work seamlessly? And how Fluent nHibernate works to choose the name of the foreign key's column?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文