在fluent NHibernate中创建数据库时更改列名

本文关键字:数据库 fluent NHibernate 创建 | 更新日期: 2023-09-27 18:10:50

我在我的应用程序中使用流利的NHibernate。我想使用我的映射从代码创建数据库表。所有表已创建,但外键列已更改。我将用户类映射为

HasMany(Function(x) x.Friends).ForeignKeyConstraintName("UserID").Inverse()

和for friend class

References(Function(x) x.Users).Column("UserID")

但是在好友表中创建的列是Users_id。但我明确定义为UserID。我做错了什么?请帮助

在fluent NHibernate中创建数据库时更改列名

我们需要的是引入一个自定义约定。

  • Fluent NHibernate约定-示例(by Marcin Obel)

摘录:

使用默认的Fluent-NHibernate设置生成的数据库(在示例中,但与我们的情况类似)是这样的:

create table `Athlete` (
     ...
     Country_id INTEGER,
     ...
)

然后,引入了这个约定:

foreignkeynameconconvention -表示包含外键id的每个列的名称应该由它指向的类型的名称加上"id"后缀组成。

public class ForeignKeyNameConvention : IHasManyConvention
{
    public void Apply(IOneToManyCollectionInstance instance)
    {
        instance.Key.Column(instance.EntityType.Name + "Id");
    }
}

和生成的SQL脚本:

create table Athletes (
     ...
     CountryId INTEGER,
     ...