在流畅的NHibernate中创建数据库期间列名更改

时间:2014-07-01 04:33:46

标签: c# mysql sql nhibernate fluent-nhibernate

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

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

和朋友班

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

但在朋友表中创建的列是Users_id。但我明确定义为UserID。我究竟做错了什么。请帮忙

1 个答案:

答案 0 :(得分:0)

我们需要的是引入自定义约定。请阅读此内容以获取更多详细信息:

摘录:

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

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

然后,该公约被引入:

  

ForeignKeyNameConvention - 表示包含外键id的每个列的名称应由其指向的类型名称组成,后缀为“Id”。

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

生成的SQL脚本:

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