@sdfdgfhgfh

Две и более строки подключения и сессии?

Есть простенький сайтик, который выводит некую информацию по убыванию из таблиц БД. Так же есть система регистрации, смена пароля и тп. Появилась необходимость использовать этот сайт на 2-3 разные БД (одинаковые по структуре), которые лежат на разных машинах. То есть по сути нужно реализовать вот что: в шапке тыкнуть кнопку сервер 1(к примеру) и получать данные с базы сервера 1, регистрироваться, менять пароль и тп. Рядом кнопка сервер 2 и всё по аналогии, но уже с базой, которая лежит на другом сервере. Авторизация юзеров на основе Claims и важно чтобы они были "внутри" выбранной ими строки подключения до того момента, пока не решат перейти к другой базе и не тыкнут на соответствующую кнопку.
Как это вообще реализуется и в какую сторону копать то? Если можно - пример. Всем спасибо большое за любую информацию!
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kttotto
пофиг на чем писать
Вы можете сделать сколько угодно конекшин стрингов в настройках, у каждого свое имя. Сделайте абстракцию над подключением к бд, туда будете передавать имя конекшина и работайте с методами этой абстракции уже.

В простом виде это примерно так
<connectionStrings>
  <add name="DB1Connection" connectionString="data source=(local);initial catalog=myDB1;" />
  <add name="DB2Connection1" connectionString="data source=(local);initial catalog=myDB2;" />
  <add name="DB3Connection1" connectionString="data source=(local);initial catalog=myDB3;" />
</connectionStrings>

connectionStringName = "DB3Connection1";

public class MyDbContext : DbContext
{
	public MyDbContext(string connectionStringName) : base(connectionStringName)
	{	}
}

Если схемы баз один одинаковые, то достаточно одного класса контекста

Как только пользователь тыкнул на другой сервер, Вы разлогинили его, создали новый конекшин и залогинили его по новой, но в выбранном контексте и перегрузили страницу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы