Tausif Khan Ответов: 1

Как получить данные из нескольких баз данных с помощью entity framework


Я разрабатываю API на языке C#, используя модель данных entity framework. Я подключен к существующей базе данных и могу получать или публиковать данные по своему усмотрению. Но теперь я хочу получить некоторые данные, которые присутствуют в другой базе данных, и отобразить информацию о сотруднике из двух разных баз данных.
Ниже приведен код, с помощью которого я получаю данные из одной базы данных.

Что я уже пробовал:

public HttpResponseMessage Get(int EmployeeId)
{
  var masterInfo = entities.Empmasters.where(e => e.EmployeeId == 
                                             EmployeeId).FirstOrDefault();

  if (masterInfo == null)
  {
     return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No info");
  }
  else
  {
    return Request.CreateResponse(HttpStatusCode.OK, masterInfo);
  }

1 Ответов

Рейтинг:
0

Keviniano Gayo

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


Tausif Khan

@keviniano: предположим, я создаю еще один DBContext и сущности для подключения к моей второй базе данных, а затем как я поддерживаю строку подключения на протяжении всего действия. Например: в моем случае это будет сотрудник, входящий в систему, поэтому часть его информации будет получена из одной базы данных, а часть-из другой. Теперь он снова пытается применить отпуск, в котором запись будет сохранена в таблице моей второй базы данных. Так как же мне поддерживать ту же строку подключения, пока ему не удастся выйти из приложения? Извините за длинный комментарий.

Keviniano Gayo

Вы настроите различную строку подключения для каждого DBContext.
класс EmployeeDB : DBContext
public EmployeeDB() : base("name=employeeConnectionString")

класс LeaveDB : DBContext
public LeaveDB() : base("name=leaveConnectionString")

приложение.конфиг:
<add name="employeeConnectionString"
система имя_поставщика=".Данных.Поставщики sqlclient"
параметр connectionString="сервер=.\Именем sqlexpress;базы данных=блогов;Комплексная безопасность=true; в"/&ГТ;

<add name="leaveConnectionString"
система имя_поставщика=".Данных.Поставщики sqlclient"
параметр connectionString="сервер=.\Именем sqlexpress;базы данных=блогов;Комплексная безопасность=true; в"/&ГТ;