Entity Framework: как использовать несколько таблиц для одной и той же сущности? - PullRequest
0 голосов
/ 21 сентября 2011

Моя ситуация следующая. Я использую Entity Framework (4.0), в котором я определил относительно простую модель, например, две сущности:

  • Пользователь
  • сделка

В этом сценарии пользователь может иметь несколько транзакций. При создании базы данных это приведет (очевидно) к двум таблицам базы данных с именами «пользователь» и «транзакция».

Проблема в том, что я хочу использовать код как веб-сервис, где разные компании должны иметь свою собственную среду (читай: собственные пользователи и транзакции). Простым решением было бы добавить столбец в обе таблицы, например, скажем, «company_id», чтобы идентифицировать одного пользователя / транзакции для companya от пользователя / транзакции от companyb.

То, что я хотел бы получить, - это дублирование таблиц следующим образом:

  • compa_user
  • compa_transaction
  • compb_user
  • compb_transaction

Таким образом, все данные будут хорошо разделены, и если компания a генерирует много транзакций, компания b не заметит, что система работает медленно или вообще.

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

Любая помощь приветствуется!

1 Ответ

2 голосов
/ 21 сентября 2011

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

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

...