EF Interitance и DBA концерны - PullRequest
4 голосов
/ 26 мая 2011

Для нового проекта наши разработчики приложений хотят использовать модель наследования таблиц для каждого типа Entity Framework.

Недавно мы продемонстрировали эту функциональность и получившуюся схему таблиц нашему администратору баз данных, и он выразил обеспокоенность,и мне интересно, как их решить.Наследование является важной частью ОО, и с точки зрения разработки было бы замечательно, чтобы БД и ORM изначально поддерживали эту концепцию.Эта функциональность является частью EF, поэтому мы не вынимаем дизайн из левого поля.

Его основные проблемы:

  • Мы не используем хранимые процы
  • Дополнительная сложность усложнит составление отчетов и обновление данных

Мы в значительной степени обратились к его сохраненным проблемам с процессами (и уже 3 года используем другой ORM).

Что касается сложности, я вижу его точку зрения, но контрапункты обращаются к ним (для меня):

  • Отчеты не должны выполняться из транзакционных таблиц (в настоящее время мы делаем это)необходимо использовать представления или преобразованную базу данных отчетов.
  • Обновления данных на более плоской структуре могут все еще испортить данные - лицо, которое обновляет данные, несет ответственность за понимание структуры.Схема, используемая в модели наследования таблиц типов для EF, не так сложна, но ее необходимо соблюдать при выполнении ручных обновлений.

Я знаю, что мы не первые, кто сталкивается с администратором баз данных.озабоченность по поводу наследования модели на основе БД.Как другие убедили своего администратора баз данных, что это хорошая модель?

1 Ответ

3 голосов
/ 26 мая 2011

Его главной заботой не является рассмотрение реальных проблем с TPT.

  • Вы можете использовать хранимые процедуры с TPT, если хотите.
  • Обновление данных не сложнее.EF справится с ними и обеспечит правильный порядок изменения данных.

Основной проблемой TPT являются неэффективные запросы (также проверьте комментарии).TPT в EF имеет реальные проблемы с производительностью, потому что он делает много левых объединений и объединений, даже если ему не нужны данные из производных таблиц.Создание любого отчета об этой структуре данных и доступ к данным отчета через EF - это действительно плохое решение.

Редактировать:

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

...