NHibernate 在一对多关系中创建 2 个字段

NHibernate creates 2 fields in one-to-many relationship

我有以下实体,由代码映射:

VarRecipeMapping.cs

public VarRecipeMapping()
{
    Table("var_recipe");

    // ...

    Bag(x => x.Entries, m =>
    {
        m.Cascade(Cascade.All | Cascade.DeleteOrphans);
        m.Lazy(CollectionLazy.NoLazy);
    },
    a => a.OneToMany());
}

VarRecipeEntryMapping.cs

public VarRecipeEntryMapping()
{
    Table("var_recipe_entry");

    // ...

    ManyToOne(x => x.Recipe, m =>
    {
        m.Column("var_recipe_id");
        m.NotNullable(true);
    });
}

令我烦恼的是生成的数据库 (SQLite):它包含由 Column 定义的我的实体的所有列以及 var_recipe_entry table.

显然是由 NHibernate 生成的,因为模型中有一个名为 Recipe 的字段。

我该怎么做才能摆脱这个无用的字段?

找到了。

我也必须在 "one-to-many" 端指定自定义名称。

VarRecipeMapping.cs

public VarRecipeMapping()
{
    Table("var_recipe");

    // ...

    Bag(x => x.Entries, m =>
    {
        // The custom name needs to be specified here too
        m.Key(n => {
            n.Column("var_recipe_id");
        });

        m.Cascade(Cascade.All | Cascade.DeleteOrphans);
        m.Lazy(CollectionLazy.NoLazy);
    },
    a => a.OneToMany());
}

VarRecipeEntryMapping.cs

public VarRecipeEntryMapping()
{
    Table("var_recipe_entry");

    // ...

    ManyToOne(x => x.Recipe, m =>
    {
        m.Column("var_recipe_id");
        m.NotNullable(true);
    });
}