使用fluent Nhibernate将列映射到没有外键约束的表

本文关键字:约束 Nhibernate fluent 映射 使用 | 更新日期: 2023-09-27 17:51:07

我有两个这样的表

CREATE TABLE [dbo].[TariffConfig]
(
     PKey INT IDENTITY NOT NULL,
     TariffDeterminatorCd INT NOT NULL
)
CREATE TABLE [dbo].[TariffDeterminator]
(
     PKey INT IDENTITY NOT NULL,
     Tariff INT NOT NULL
)

TariffDeterminatorCd从TariffDeterminator中引用一行(它等于TariffDeterminator中的PKey),但它们之间没有外键约束。

和它们的实体类是这样的

public class TariffDeterminator : EntityBase
{       
    public virtual Int32 Age { get; set; }
    public virtual Int32 Tariff { get; set; }
}
public class TariffConfig : EntityBase
{
    public virtual TariffDeterminator Determinator{ get; set; }
}

我有一个像这样的TariffDeterminator

public class TariffDeterminatorMap : EntityBaseMap<TariffDeterminator>
{       
    public TariffDeterminatorMap ()
        : base()
    {
        this.Initialize("TariffDeterminator");
        Map(x => x.Age).Not.Nullable();
        Map(x => x.Tariff).Not.Nullable();
    }
}

谁能帮我写一个流畅的Nhibernate映射为TariffConfig实体?

使用fluent Nhibernate将列映射到没有外键约束的表

我从未使用过FluentNHibernate,但它应该是这样的

public class TariffConfigMap : EntityBaseMap<TariffConfig>
{
    public TariffConfigMap() : base()
    {
       this.Initialize("TariffConfig");
       References(prop => prop.Determinator)
            .ColumnName("TariffDeterminatorCd");           
    }
}

我看不到主键映射到你的实体类中,我假设这些属性是在Initialize()期间继承和映射的。

您通常不需要外键约束来映射实体之间的关系,您只需要外键本身。