繁体   English   中英

将一个实体映射到多个表

[英]Mapping one entity to multiple tables

我有一个关于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。 如何描述数据库当前结构下的方案映射?

刚开始使用nHibernate时,我尝试做同样的事情,但找不到解决方法。 我实际上不相信您可以将多个表映射到单个对象。 通常,每个表只有一个实体。 每个实体都将映射到其表,并且它们之间将具有引用/ hasmany链接。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM