powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHiberate. Запросить дочерние объекты по их общему предку
4 сообщений из 4, страница 1 из 1
NHiberate. Запросить дочерние объекты по их общему предку
    #37730805
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется интерфес IUser, две его реализации и две таблицы в БД под UserA, UserB
Код: c#
1.
2.
3.
interface IUser { ... }
class UserA : IUser { ... }
class UserB : IUser { ... }


Хочу сделать запрос и получить список UserA и UserB в одной коллекции.
Ну и возможность запрашивать каждую по отдельности.
Код: c#
1.
session.CreateCriteria<IUser>().List<IUser>()


Можно ли такое сделать?
Подскажите куда копать.
...
Рейтинг: 0 / 0
NHiberate. Запросить дочерние объекты по их общему предку
    #37730811
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maratoss,

можно. Замапить как union-subclass, где базовым классом будет интерфейс IUser.
...
Рейтинг: 0 / 0
NHiberate. Запросить дочерние объекты по их общему предку
    #37731118
maratoss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сделал, все работает, запрос генерится какой нужно.
Только есть один косяк.
Как мне задать у Subclass первичный ключ?
Так как в таблицах поля первичных ключей называются по разному.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class IUserMap : ClassMap<IUser>
{
     public IUserMap()
     {
          Id(x => x.Uid, "RN");
          UseUnionSubclassForInheritanceMapping();
     }
}
class UserAMap : SubclassMap<UserA>
{
     public UserAMap()
     {
           //Вот тут вот метод Id(), который задает первичный ключ, отсутствует(
           //А ключ берет от родителя - IUser
     }
}
...
Рейтинг: 0 / 0
NHiberate. Запросить дочерние объекты по их общему предку
    #37739348
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maratoss,

Хибер не поддерживает такой функционал из коробки. Можно конечно прописать кастомные sql-запросы для сохранение, загрузки и удаления, но тогда вы потеряете многие преимущества хибера.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHiberate. Запросить дочерние объекты по их общему предку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]