我有实体:
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的自动化,主要是所有默认设置。
答案 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)
来解决这个问题