编程语言
首页 > 编程语言> > c#-如何防止Fluent NHibernate将“ Parent”表的FK添加到关系表中?

c#-如何防止Fluent NHibernate将“ Parent”表的FK添加到关系表中?

作者:互联网

我有实体:

public class Plugin
{
    public virtual int Id { get; set; }
    public virtual int Version { get; set; }

    public virtual Plugin ParentPlugin { get; set; }
    public virtual IEnumerable<Setting> Settings { get; set; }
}
public class Setting
{
    public virtual int Id { get; set; }
    public virtual Plugin Plugin { get; set; }
    public virtual int Version { get; set; }
}

问题是,当我添加ParentPlugin时,它在数据库的Setting表中添加了ParentPlugin_Id.我不知道为什么要这么做,但是我想让设置只在数据库中有一个Plugin_Id而不是Plugin_Id和ParentPlugin_Id.

因此,我想知道2件得到赏金的事情:
1.如何从设置中删除ParentPlugin_Id引用?
2.为什么首先要这样做(链接到doc即可,我找不到一个可以解释这个问题的人)?

我正在使用Fluent Nhibernate的自动映射功能,大多数情况下都是默认设置.

解决方法:

通过指定确切的FK名称,我可以删除多余的ParentPlugin_Id.有点反感,必须添加FK而不是删除FK,但是…

 .Override<Plugin>(m => m.HasMany(c => c.Settings).KeyColumn("Plugin_Id"))

对外键公约(https://github.com/jagregory/fluent-nhibernate/wiki/Auto-mapping)有更深入的了解来解决这个问题

标签:nhibernate,c,fluent-nhibernate
来源: https://codeday.me/bug/20191122/2062141.html