Более изменчивая строка подключения во время выполнения - PullRequest
0 голосов
/ 29 октября 2018

У меня есть три идентичных сервера базы данных (в смысле DDL), к которым подключается мое приложение.

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

Это проект API ASP.NET Core 2.1, в котором реализованы шаблоны служб и репозитория (запросы к базе данных вызываются с помощью Dapper, но это можно изменить).

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

Таким образом, только сторона приложения может решить, к какому серверу базы данных подключаться во время выполнения.

Мне удалось найти образцы и предложения для EF Core, но не для чего-то еще, особенно Dapper.

Итак, мой вопрос. Как я могу позволить пользователям менять сервер базы данных во время выполнения, оставляя домен и хранилище не осведомленными о наличии нескольких серверов?

1 Ответ

0 голосов
/ 29 октября 2018

Так что в этом случае я бы посоветовал хранить строки подключения либо в переменных среды, либо в файлах appsettings.json. Допустим, пользователь хочет получить доступ к «server1», это будет входить из вашего API, и вы можете затем получить соответствующую строку соединения на вашем уровне хранилища, например,

var connectionString = Environment.GetEnvironmentVariable(serverToUse);

Где serverToUse - это "server1", переданный из API. Я предпочитаю хранить строки подключения в переменных окружения, так как они хранятся непосредственно на главном компьютере, а не в приложении. Вы также можете сделать это через appsettings

"Server1" : "Your connection string here" в вашем appsettings.json

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

...