3

我有实体:

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 时,它向 DB 中的 Setting 表添加了 ParentPlugin_Id。我不知道它为什么这样做,但是我希望设置在数据库中只有一个 Plugin_Id 而不是 Plugin_Id 和 ParentPlugin_Id。

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

我正在使用 Fluent Nhibernate 的自动映射,大部分都是默认设置。

4

1 回答 1

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)得出的

于 2013-09-22T16:33:34.863 回答