gpt4 book ai didi

c# - 如何使用 IHasManyConvention Fluent NHibernate 约定在 HasMany 映射上设置 PropertyRef?

转载 作者:太空狗 更新时间:2023-10-30 00:46:47 26 4
gpt4 key购买 nike

目前我正在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com