在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约定-示例(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,
...