Отображение NHibernate на две версии таблицы - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть таблица с двумя версиями например TableVersion1 с колонками: A, B, C, TableVersion2 с колонками: A, B, C, D

как написать сущность, которая будет работать в обеих версиях таблицы?

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

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

<class entity-name="ArtistA" name="Artist" table="artist_a">
    <id name="Id" column="artist_a_id">
        <generator class="native" />
    </id>

    <property name="Name" column="artist_a_name" not-null="true" />
</class>

<class entity-name="ArtistB" name="Artist" table="artist_b">
    <id name="Id" column="artist_b_id">
        <generator class="native" />
    </id>

    <property name="Name" column="artist_b_name" not-null="true" />
</class>

Обратите внимание на наличие атрибута entity-name.При сохранении сущности вы должны указать имя сущности.

session.Save("ArtistA", new Artist { ... });
0 голосов
/ 16 февраля 2012

Может быть, что-то вроде этого будет работать для вас.Это свободный синтаксис, но вы поняли идею.Это предполагает, что обе версии этой таблицы существуют в одной базе данных.Если нет, я не думаю, что это можно сделать.

public class TableVersionMap : ClassMap<TableVersion>
{
    public TableVersionMap()
    {
        Table("TableVersion1");
        Id(x => x.Id);
        Map(x => x.A);
        Map(x => x.B);
        Map(x => x.C);

       Join("TableVersion2", uc =>
       {
           uc.KeyColumn("Id");
           uc.Map(x => x.D);
       });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...