如何防止Fluent NHibernate将“父”表的FK添加到关系表?

时间:2013-09-20 02:23:14

标签: c# nhibernate fluent-nhibernate

我有实体:

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时,它将ParentPlugin_Id添加到DB中的Setting表。我无法弄清楚为什么会这样做,但是我想设置只有Plugin_Id而不是数据库中的Plugin_Id和ParentPlugin_Id。

所以,我想知道两件事要获得赏金:
1.如何从设置中删除ParentPlugin_Id引用?
2.为什么它首先这样做(链接到doc是好的,我找不到解释这个)?

我正在使用Fluent Nhibernate的自动化,主要是所有默认设置。

1 个答案:

答案 0 :(得分:3)

通过指定确切的FK名称,我能够删除额外的ParentPlugin_Id。有点反直觉,必须添加一个FK而不是删除一个...

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

通过更深入地了解外国公约(https://github.com/jagregory/fluent-nhibernate/wiki/Auto-mapping

来解决这个问题