Примеры ORM, которые используют одну таблицу для всей иерархии, и те, которые не? - PullRequest
3 голосов
/ 09 августа 2009

С http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx

"разработчики обычно применяют один из двух других подходов, более сложных по внешнему виду, но более эффективных при работе с реляционным хранилищем: они либо создают таблицу для конкретного (наиболее производного) класса, предпочитая перенести денормализацию и ее стоимость, либо иначе они создают единую таблицу для всей иерархии, часто в любом случае создавая столбец дискриминатора, чтобы указать, к какому классу принадлежит каждая строка в таблице. (Различные гибриды этих схем также возможны, но обычно не дают результатов, которые значительно отличается от этих двух.) К сожалению, затраты на денормализацию часто значительны для большого объема данных, и / или таблицы (таблицы) будут содержать значительное количество пустых столбцов, что потребует ограничения NULLability для всех столбцов, устраняя мощные ограничения целостности, предлагаемые СУРБД. "

Я хотел бы знать, какие ORM используют один или другой способ, особенно те, которые используют одну таблицу и в .NET?

Ответы [ 4 ]

4 голосов
/ 10 августа 2009

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

Я могу упомянуть DataObjects.Net , который использовал таблицу классов схему наследования только в предыдущих версиях. Но этот продукт был полностью переписан и теперь позволяет использовать три разные схемы наследования: Таблица классов , Одиночная таблица и Конкретная таблица .

1 голос
/ 11 августа 2009

Sense / Net Content Repository - это ORM, где существует фиксированная схема для иерархии: около 15 таблиц заботятся обо всем отображении, которое определяется XML.

NHibernate не является примером подхода с одной таблицей, поскольку необходимо определить отдельные таблицы для каждого объекта, а затем определить привязку схемы также по одному. То есть составление таблицы на бетон.

1 голос
/ 09 августа 2009

NHibernate поддерживает подход единой таблицы.

1 голос
/ 09 августа 2009

особенно те, которые используют одну таблицу и в .NET?

LINQ-to-SQL может использовать подход единой таблицы / дискриминатора. Пример приводится здесь .

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