Entity Framework предоставляет несколько баз данных как единое целое

#sql-server-2008 #entity-framework-4 #sap

#sql-server-2008 #entity-framework-4 #sap

Вопрос:

У меня есть три базы данных с точно такой же схемой (базы данных SAP Business One). В этих базах данных у меня есть таблица item masters, подключенная к таблице складских запасов через код item. Могу ли я иметь только одну модель Entity Framework, которая имеет только один объект item master и один объект warehouse stocks, который извлекает данные из трех баз данных? Элементы в трех базах данных одинаковы, но у них разные коды хранилища. Я не знаю, ясно ли я выразился.

Ответ №1:

Если вам нужна единая модель EF, которая будет одновременно загружать данные из трех баз данных, то ответ — нет. Если вам нужна единая модель EF, которую можно использовать для всех трех баз данных, ответ «да», но все ваши базы данных должны использовать одного и того же поставщика баз данных (сервер) и должны иметь точно такую же схему отображенных таблиц.

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

Если вам нужен первый сценарий, вы можете попытаться скрыть объединения и перекрестные запросы к базе данных в представлениях и отобразить эти представления в вашей модели. Это имеет два недостатка:

  • Связь между представлениями не разрешена в SQL Server, но вы можете создать связь в модели EF
  • Представления доступны только для чтения в модели EF. Если вы хотите изменить данные, лучший способ — сопоставить хранимые процедуры, которые это сделают.

Комментарии:

1. Я хотел использовать первый сценарий. Думаю, мне придется перейти к созданию представления. Спасибо.