Сопоставление одной сущности нескольким таблицам

У меня вопрос, связанный с 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. Как я могу описать отображение схемы в текущей структуре базы данных?


person sribin    schedule 10.01.2013    source источник


Ответы (1)


Я пытался сделать то же самое, когда впервые начал использовать nHibernate, и не смог найти способ сделать это. На самом деле я не верю, что вы можете сопоставить несколько таблиц с одним объектом. Обычно у вас будет одна сущность на таблицу. Каждый объект будет сопоставлен со своей таблицей и будет иметь ссылки/много связей между ними.

Вы, вероятно, обнаружите, что наличие одной сущности на таблицу также лучше в долгосрочной перспективе, поскольку это позволяет упростить сопоставление с базой данных.

person Mark Seefeldt    schedule 22.02.2013