我有实体:
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。我不明白为什么要这样做,但是我希望设置在数据库中只有一个 Plugin_Id 而不是 Plugin_Id 和 ParentPlugin_Id。
所以,我想知道获得赏金的两件事:
1. 如何从设置中删除 ParentPlugin_Id 引用?
2. 为什么它首先要这样做(文档链接没问题,我找不到解释这个的文档)?
我正在使用 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) 的更深入理解得出的
关于c# - 如何防止 Fluent NHibernate 将 "Parent"表的 FK 添加到关系表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18907915/