#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. Я хотел использовать первый сценарий. Думаю, мне придется перейти к созданию представления. Спасибо.