作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
目前我正在使用 Fluent NHibernate 生成我的数据库架构,但我希望 HasMany 关系中的实体指向不同的列以供引用。 IE,这是 NHibernate 将在创建 DDL 中生成的内容:
alter table `Pony` add index (Stable_ID),
add constraint Ponies_Stable foreign key (Stable_Id)
references `Stable` (Id);
这是我想要的:
alter table `Pony` add index (Stable_ID),
add constraint Ponies_Stable foreign key (Stable_Id)
references `Stable` (EntityId);
其中 Stable.ID 是主键,而 Stable.EntityId 只是我设置的另一列。
我已经有一个看起来像这样的类了:
public class ForeignKeyReferenceConvention : IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Cascade.All();
//What goes here so that I can change the reference column?
}
}
举个例子,这里是 IReferenceConvention 的代码看起来像做同样的事情:
public class MyReferenceConvention : IReferenceConvention
{
public void Apply(IManyToOneInstance instance)
{
instance.PropertyRef("EntityId");
instance.Cascade.All();
}
}
编辑:instance.Key.Column("EntityId")
不是解决方案。
最佳答案
Note: this is only available in the builds after #632 from the Fluent NHibernate downloads
IOneToManyInstance
上有一个名为Key
的属性,可让您修改关系中使用的键;在该属性上,有一个 PropertyRef
方法,这应该是您要查找的内容。
public class ForeignKeyReferenceConvention : IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Key.PropertyRef("EntityId");
}
}
关于c# - 如何使用 IHasManyConvention Fluent NHibernate 约定在 HasMany 映射上设置 PropertyRef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2344475/
目前我正在使用 Fluent NHibernate 生成我的数据库架构,但我希望 HasMany 关系中的实体指向不同的列以供引用。 IE,这是 NHibernate 将在创建 DDL 中生成的内容:
我是一名优秀的程序员,十分优秀!