2016-09-20 6 views
0

Я работаю над основным приложением ASP.NET, где я использую Entity Framework для взаимодействия с базой данных SQL Server. до сих пор я использовал команду Scaffold-DbContext для создания новой модели из базы данных SQL-сервера. Даже если бы мы хотели создать DbContext на основе нескольких таблиц, я мог бы сделать это, используя флаг -t в приведенной выше команде. Все происходит в одной базе данных SQL.Объединение нескольких таблиц из разных баз данных

Scaffold-DbContext "Server=XXXXXXXXX;Database=XXXXXXXX;User Id=XXXXX;Password:XXXXXX" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t Table1 Table2 

От Scaffold-DbContext parameters команды, я не мог найти возможность указать различные базы данных.

В новом сценарии я должен присоединиться к двум таблицам из разных баз данных SQL. Есть ли способ создать модель, состоящую из 2 таблиц из разных баз данных. Обе таблицы используют взаимно-однозначные отношения между ними.

Например: DB1 имеет таблицу 1 и DB2 имеет таблицу2. Есть ли способ создать DbContext, который состоит из этих двух таблиц (table1 и table2)?

Есть ли другой способ достичь соединения между двумя таблицами из 2 разных баз данных?

+1

Объединение через базы данных не поддерживается ни в одной из версий EF. Однако вы можете запросить каждую базу данных отдельно, а затем присоединиться к linq к объектам. – jrummell

ответ

1

Нет, вы не можете сделать это с помощью EntityFramework (ни 6.x, ни Core). DbContext для каждой базы данных, и вы можете делать только соединения внутри одного и того же DbContext.

Вы можете создать представление и сопоставить представление с моделями, которые вам нужны, но iirc. отображение представлений по-прежнему находится в дорожной карте для ядра EntityFramework. Может работать с EntityFramework 6.x.

Edit:

По крайней мере, вы не можете делать это с Linq/Fluent API. Однако вы можете выполнить raw queries. Улов: проект должен точно соответствовать модели, не может быть недостающих полей модели. Ad-hoc-сопоставление для не-сущностей находится в дорожной карте для будущих версий EntityFramework Core

+0

Спасибо @Tseng за предложения. попробует использовать необработанные запросы. – Sanket

+1

Если вы используете SQL Server, возможно, вы можете попробовать «синоним» в SQL Server, создать «синоним» таблицы в другой базе данных и с точки зрения EF ее можно рассматривать как локальную таблицу. Я сам не пробовал себя. – Ricky

Смежные вопросы