Одна сущность для нескольких похожих таблиц - PullRequest
0 голосов
/ 08 августа 2010

имеют две таблицы в базе данных.

У них совершенно одинаковые столбцы, только разница между ними - у них разные имена.

Допустим, у меня есть TableSea с идентификатором и именем столбца s и TableOcean с теми же столбцом Id и Name.

Я хочу использовать EF 4 для работы с CRUD, я также хочу использовать отображение сохраненных процедур для операций вставки обновления и удаления.

Я уже создал объект POCO для первой таблицы, и я создал хранимые процедуры и сопоставил их с моделью объекта. Все работает хорошо.

Как заставить его работать с двумя таблицами, не создавая новую сущность для второй таблицы?

1 Ответ

0 голосов
/ 08 августа 2010

AFAIK, ты не можешь, и ты определенно не должен!

Если у вас две идентичные таблицы базы данных, это означает одну из следующих:

  1. Два стола очень близко отражают связанные понятия (например, Море и Океан в твоем примере).
  2. Две таблицы отражать различные концепции, которые только случайно есть то же самое свойства.

В зависимости от того, какой сценарий ближе к реальности, у вас есть два варианта дизайна:

  1. Объедините две таблицы и добавьте Type свойство (колонка), затем карта это к одному типу сущности. Ты можешь иметь разные подклассы для различать типы, или вы может пойти с дополнительным Type свойство - в зависимости от того, что лучше подходит для вы.
  2. Есть две таблицы. Что означает: есть два разных понятия. Следовательно, это должно быть отражено двумя различными объектами в бизнес-модели.

В любом случае наличие таблицы сущностей в базе данных означает наличие класса сущности в бизнес-модели. Если такого сопоставления 1: 1 нет, то явно что-то не так с дизайном!

Thomas

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