Отображение нескольких классов, реализующих один и тот же интерфейс - PullRequest
1 голос
/ 12 января 2012

У меня есть класс, который реализует следующий интерфейс:

IUser {
    string UserName { get; set; }
}

Класс по умолчанию, который реализует этот интерфейс (пользователь), и интерфейс определены в базовой библиотеке, и в идеале я не хочу изменять это,Однако мне нужно добавить дополнительное свойство для моего пользователя, поэтому я добавил собственный класс, который также реализует интерфейс IUser.Я сопоставил это так же, как я сопоставил класс пользователя, но с дополнительными полями.Однако, если я пытаюсь сказать:

session.Get<IUser>(1);

Выдает ошибку:

Неоднозначное сохранение для Security.IUser, реализованного несколькими иерархиями: Web.Security.Models.UserSecurity.Models.User

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

Буду признателен за помощь.Спасибо

1 Ответ

3 голосов
/ 12 января 2012

NHibernate имеет понятие имени сущности

// in UserMap
EntityName("user");

// in SpecialUserMap
EntityName("specialUser");

// then in Query
(IUser)session.Get("user", 1);
// or
(IUser)session.Get("specialUser", 1);
...