Производный базовый класс NHibernate - PullRequest
0 голосов
/ 09 ноября 2018

у нас есть сущность NHibernate под названием Order. В ордере есть список позиций и другие вещи.

Теперь я реализовал новый объект с именем OrderMin, который теперь является базовым классом Order. То же самое я сделал для OrderPosition, который теперь имеет базовый класс с именем OrderPositionMin

Когда я пытаюсь загрузить OrderMin-Collection, я получаю странное поведение: В коллекции теперь есть объекты OrderMin и Order, это мой код:

    var mins = Session.QueryOver<OrderMin>()
                    .Where(x => RestrictionExtensions.IsIn(x.Id,
                        list))
                    .List();

Когда я смотрю в коллекцию, содержащиеся объекты Порядка теперь имеют 2 Списка Списков Позиций. Один из типа OrderPosition и один из OrderPositionMin.

Я пытался использовать ключевое слово override в объекте заказа, но это невозможно, поскольку все свойства должны быть виртуальными.

Кто-нибудь знает, что здесь происходит не так?

Спасибо заранее, Dennis

1 Ответ

0 голосов
/ 09 ноября 2018

Это поведение по умолчанию в NHibernate. Вам нужно объявить базовый класс, из которого происходят ваши Order и OrderMin.

public abstract class OrderBase
{
    // The properties that are needed by all derived types
}

public class OrderMin : OrderBase {}

public class Order : OrderBase {}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...