Есть ли реальное применение для таблицы на каждый конкретный класс с неявным полиморфизмом? - PullRequest
2 голосов
/ 01 февраля 2012

Если при отображении наследования используется таблица для каждого конкретного класса, а при сопоставлении конкретных классов просто, как и в любом другом классе (без объединения-подкласса), NHibernate допускает одинаковые PK для всех подклассов. Например, если у вас есть BillingDetails и подклассы CreditCard и BankAccount, при запросе всех BillingDetails вы получите все записи из обеих таблиц, которые, в свою очередь, могут иметь дубликаты первичных ключей, что может быть проблематично из-за неправильной деловой идентичности этих объектов. Это, конечно, не относится к руководствам и тому подобному, но как насчет случаев генерации простого идентификатора или идентификатора последовательности?

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

1 Ответ

3 голосов
/ 01 февраля 2012

Неявный полиморфизм необходим при отображении унаследованных моделей, в которых таблицы не имеют общего ключа.

Нет проблем с получением списка BillingDetails с экземплярами CreditCard и BankAccount, использующими один и тот же Id, поскольку NH знаетони не связаны (и рассматриваются как связанные только для целей запроса, путем выполнения одного запроса для каждого сопоставленного подкласса)

Вы не должны использовать его для разработки новых месторождений.

...