Одно веб-приложение с доступом к базе данных, определяемое входом пользователя - PullRequest
0 голосов
/ 25 июня 2019

У меня есть веб-приложение, которое позволяет пользователям просматривать данные.Наши пользователи приходят из разных мест, и у каждого места есть своя база данных.Я хочу иметь возможность подключаться к соответствующей базе данных на основе имени пользователя, к сожалению, я еще недостаточно знаком с ASP.NET/EF Core / Razor Pages, чтобы понять, как это сделать.

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

Пользователи хранятсяв совершенно отдельной базе данных, которая используется для нашего IdentityContext.В настоящее время это веб-приложение предлагается только одному из наших клиентов, и поэтому код Startup.cs выглядит следующим образом:

services.AddDbContext<Models.MyContext>(options =>
{                    
    options.UseSqlServer(Configuration.GetConnectionString("ConnectionStringIdentifier"));
});

Я ищу несколько советов о наилучшей стратегии решения этой проблемы.Нужно ли вызывать services.AddDbContext <...> (...) для каждой отдельной строки подключения?Есть ли способ изменить базу данных контекста во время выполнения после входа пользователя?Из того, что я прочитал, первое кажется более вероятным, чем второе.Кажется, что контекст EFCore не допускает каких-либо манипуляций с его свойством Database, а контекст страницы Razor передается в конструктор, который я никогда не вызываю вручную в своем собственном коде.

Любой совет приветствуется, спасибо!

...