Моя объектная модель представляет канал подкаста с данными канала и элементами канала (отдельными подкастами). Это структурировано следующим образом:
PodcastFeed
ChannelData // Property on PodcastFeed
ITunesChannelData // Property on ChannelData
FeedItems // Property on PodcastFeed; collection of PodcastFeedItems
PodcastFeedItem
ITunesItemData // Property on PodcastFeedItem
В моей базе данных поля PodcastFeed, ChannelData и ITunesChannelData хранятся в одной таблице; в равной степени поля в PodcastFeedItem и ITunesItemData хранятся в одной таблице. От PodcastFeed до PodcastFeedItem существует отношение один ко многим. Причина их сохранения заключается в том, что существует взаимно-однозначное сопоставление между различными типами объектов (например, ChannelData уникальна для каждого канала подкаста).
Я согласен с отображением PodcastFeed в PodcastFeedItem, но я не могу понять, как это сделать, как разделить данные в таблице Feeds на различные классы, составляющие PodcastFeed. Я успешно создал сопоставления NHibernate из таблицы Feeds для этих типов, но когда я обращаюсь к объекту PodcastFeed, свойство ChannelData имеет значение null. Предположительно это происходит потому, что NHibernate не знает, как создать иерархию, как описано выше.
FWIW, я попытался выполнить следующую строку в моем файле сопоставления безуспешно (NHibernate пытается загрузить данные из несуществующего столбца «ChannelData» в таблице).
<property name="ChannelData" type="ChannelData" />
Нужно ли мне создавать пользовательский тип в NHibernate, чтобы включить это, или мне не хватает какого-то встроенного трюка?