我在我的应用程序中使用流畅的NHibernate。我想使用我的映射从代码创建数据库表。创建了所有表,但外键列已更改。我的用户类映射为
HasMany(Function(x) x.Friends).ForeignKeyConstraintName("UserID").Inverse()
和朋友班
References(Function(x) x.Users).Column("UserID")
但在朋友表中创建的列是Users_id。但我明确定义为UserID。我究竟做错了什么。请帮忙
答案 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,
...