Сохранение одной таблицы на иерархию классов с использованием NHibernate без дискриминатора? - PullRequest
0 голосов
/ 11 мая 2011

У меня есть интерфейс и класс, который реализует этот интерфейс.

public interface IPhase {
    string Description { get; set; }
    int Id { get; }
    string Phase { get; set; }
}

public class Phase : IPhase {
    // Implementation here...
}

Теперь, используя NHibernate 2.1.2.GA, я хочу использовать иерархию таблиц для классов для отображения интерфейса и его разработчика, и, действительно, мне не нужен дискриминатор, так как этот разработчик будет в этой таблице сохранился только класс. Я не пользуюсь NHibernate уже около полутора лет, и здесь у меня некоторые пробелы в памяти ...

Я прочитал этот вопрос и ответы, связанные с ним, за исключением того, что я не использую FNH.
NHibernate Mapping: сохранение иерархии в одной таблице без дискриминатора

  1. Интересно, является ли атрибут discriminator обязательным при использовании subclass?

  2. Как должно выглядеть мое отображение XML в этом конкретном контексте?

Спасибо за помощь!

1 Ответ

5 голосов
/ 11 мая 2011

Конечно, NHibernate нужен дискриминатор для отображения иерархии таблицы на класс, как он должен идентифицировать различные подклассы при получении строки из базы данных в противном случае?

Если существует только одна реализацияинтерфейс, почему вы хотите отобразить это?Просто отобразите класс как обычный объект (без наследования).

edit: Забыл, что в вашем отображении могут быть ссылки на интерфейс.В этом случае вы можете попробовать отображение таблицы на конкретный класс, помечая базовый класс (интерфейс) с помощью abstract="true", как описано здесь: http://nhibernate.info/doc/nh/en/index.html#inheritance-tableperconcrete

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