将一个实体映射到多个表

时间:2013-01-10 18:11:49

标签: c# nhibernate fluent

我有一个与Fluent NHibernate相关的问题。我无法描述将一个实体映射到多个表的模式。数据库有以下结构:

Create table CeTypes (Id int not null PRIMARY KEY, Name nvarchar(100) not null)
Create table CeValues (Id int not null PRIMARY KEY, Name nvarchar(100) not null)
Create table Ces (Id int not null PRIMARY KEY, CeType_id int not null FOREIGN KEY REFERENCES CeTypes(Id), CeValue_id int not null FOREIGN KEY REFERENCES CeTypes(Id))

有以下实体:

public class Ce
{
     public virtual int Id { get; set; }
     public virtual string Type { get; set; }
     public virtual string Value { get; set; }
}

域中的CeType,CeValue实体并没有。我不知道如何描述映射Ce实体。

试图描述:

public class CeMap : ClassMap<Ce>
{
    public CeMap()
    {
        Table("Ces");
        Id(c => c.Id);

        Join("CeTypes", m => m.Map(ce => ce.Type).Column("Name"));
        Join("CeValues", m => m.Map(ce => ce.Value).Column("Name"));
    }
}

但是使用这样的CeType方案,CeValue表应该有一个字段Ce_id。如何在数据库的当前结构下描述方案映射?

1 个答案:

答案 0 :(得分:0)

当我第一次开始使用nHibernate时,我尝试做同样的事情,但却找不到办法。我实际上不相信你可以将多个表映射到一个对象。通常每个表有一个实体。每个实体都将映射到它们的表,并且它们之间会有引用/ hasmany链接。

您可能会发现,从长远来看,每个表中有一个实体更好,因为它允许更简单地映射到数据库。