NHibernate 3.x: та же таблица, три сопоставления, каждый результат три раза - PullRequest
0 голосов
/ 24 марта 2011

У меня есть три типа сущностей: A, B и C.

Они отображаются в одну и ту же таблицу базы данных.

B и C наследуют A.

ТамВ таблице базы данных три записи, которые отображаются A, B и C.

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

IЯ пытался удалить сопоставления для B и C, а затем я получил целое число объектов: три.

Наконец, я профилировал SQL Server, и запрос, запущенный из приложения, переводится в три SQLКоманды SELECT.

Как этого избежать?Или я хочу знать, возможно ли отобразить N классов в одну и ту же таблицу, не имея в виду, что попытка получить сущность приведет к ее извлечению столько раз, сколько будет сопоставлена ​​целевая таблица.

Заранее спасибо.

1 Ответ

4 голосов
/ 24 марта 2011

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

...