Динамические свойства картографирования NHibernate - PullRequest
1 голос
/ 17 июня 2011

Привет, мой сайт имеет следующую структуру базы данных:

Разделы

  • Id (PK, Identity)
  • Имя

Документы

  • Id (PK, Identity)
  • SectionId (FK to Sections)

Статьи

  • Id (PK, FK для документов)
  • Заголовок
  • Содержимое

Ссылки

  • Id (PK, FK to Doucments)
  • Заголовок
  • SomeOtherField

Метакомпонент

  • Идентификатор (PK, FK для документов)
  • MetaKeywords
  • MetaDescription

SectionComponents

  • SectionId (FK to Sections)
  • ComponentName

Сайт содержит несколько разделов (Статьи иСсылки в приведенной выше структуре).Таблицы «Статьи» и «Ссылки» дополняют документ дополнительными полями, которые применяются только для этого конкретного раздела.В каждом разделе могут быть добавлены дополнительные компоненты.Таблица MetaComponent является примером одного конкретного Компонента, который включает метаинформацию поисковой системы.

Мне было интересно, можно ли сопоставить мое приложение, чтобы я мог запросить все Статьи и присоединиться к нему, чтобы получить метаинформацию для этогоконкретная статья.Я знаю, что мог бы добавить свойство Meta против моего класса Article, но я хочу иметь возможность легко включать и выключать, какие компоненты применяются к определенным разделам.Полагаю, мне нужно было бы сделать что-то более изворотливое, чтобы получить эту информацию, и я был бы признателен, если бы кто-то мог помочь.

Надеюсь, я объяснил все достаточно ясно.

Спасибо

1 Ответ

0 голосов
/ 18 июня 2011

во-первых, одно из самых больших преимуществ nHib (или любого ORM, в этом отношении) заключается в том, что он позволяет вам просматривать домен вашего приложения как сущности , а не таблицы .
Так что в вашем случае, я думаю, было бы более правильным и более понятным взглянуть на ваш документ сущность как на базовый класс, в котором Link и Article являются подклассами.
И когда мы смотрим на это так, решение вашей проблемы очевидно - отображение подклассов:
* свободный nHib docs для отображения наследования,
* более подробную информацию можно найти в nHib документы .

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