Наследование с помощью Fluent NHibernate дает двойной результат - PullRequest
2 голосов
/ 08 ноября 2010

У меня есть следующий сценарий:

public class Login
{
    public virtual int Id { get; set; }
    public virtual string Username { get; set; }
}

public class User : Login
{
    public IList<Account> Accounts { get; set; }
}

Если у меня есть две карты (ClassMap<Login> и ClassMap<User>), все запросы возвращают двойные результаты - один на каждую карту, я думаю.

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

Ответы [ 2 ]

4 голосов
/ 08 ноября 2010

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

Чтобы избежать этого, в сопоставлениях XML необходимо использовать polymorphism="explicit".

Для отображений Fluent используйте Polymorphism.Explicit().

0 голосов
/ 08 ноября 2010

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

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