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

标签 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。我不明白为什么要这样做,但是我希望设置在数据库中只有一个 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/

相关文章:

nhibernate - NHibernate不删除子对象

C#计算两个纬度/经度点之间沿大圆路径的n个点数

c# - ASP.NET 中的缓存是跨用户共享还是特定于个人?

c# - 为什么要使用 IEnumerable 作为方法返回类型或在构造函数中

visual-studio-2008 - nHibernate 和 sqlite 映射

c# - NHibernate 除了存储过程什么都没有

c# - 在 Azure 网站上时,UserPrincipal.SetPassword 抛出 UnauthorizedAccessException

c# - 跟踪 SQL Server 中创建和更新时间的最佳方法

nhibernate - 如何将新对象添加到与 NHibernate 一对多映射的 IList?

.net - 如何微调 FluentNHibernate 的自动映射器?