Одностороннее наследование с HNibernate - PullRequest
0 голосов
/ 30 апреля 2011

Я, честно говоря, понятия не имею, что искать, чтобы ответить на мой вопрос, так что вот так.

Я пробую разные подходы к новому проекту, на котором начинаю.

У меня есть СУБД PostgreSQL. У меня есть одна БД с несколькими схемами. Идея заключается в том, что существует «корневая» схема, которая служит основой для других схем. То, чего я пытаюсь достичь, это своего рода «одностороннее» наследование. Я бы хотел, чтобы мои запросы в корневых таблицах не рассматривали подклассовые схемы, но я не нашел способа сделать это.

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

Я понимаю разницу между различными подходами наследования, но я просто не уверен, возможно ли то, что я пытаюсь сделать.

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

Может быть, поведение в некоторых ситуациях подходит, но в других я просто хотел бы запросить базовый класс «в одиночку».

Как еще одно требование, базовый класс не может знать о подклассах (они похожи на плагины / расширения).

Надеюсь, вышесказанное имело какой-то смысл - это было немного сложно выразить.

Заранее спасибо ...

Ответы [ 2 ]

1 голос
/ 30 апреля 2011
0 голосов
/ 30 апреля 2011

Я понял это. Моя проблема была в моем SubclassMap<>. Очевидно, NHibernate не поддерживает явный полиморфизм с присоединенным подклассом. Теперь я присоединяюсь к каждому подклассу, используя ClassMap<> и вызывая Join(...). В этом сценарии работает явный полиморфизм.

...