Мы работаем над различными приложениями ASP.NET Core MVC 1.0. У нас есть 4 уровня для каждого из наших приложений:
- DTO
- Репозиторий (Entity Framework - первый код)
- Служба (бизнес-логика)
- MVC (UI-MVC)
В настоящее время в наших репозиториях, которые обрабатывают все операции с базой данных, мы жестко закодировали строки подключения к базе данных в DbContext следующим образом:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
optionsBuilder.UseSqlServer("Data Source=somedatabase.database.windows.net;Initial Catalog=database;Integrated Security=False;User ID=username;Password=password;Connect Timeout=60;Encrypt=True;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true");
}
Этот проект находится за пределами проекта MVC как автономный проект ASP.NET Core 1.0. У него также есть пустой файл Program.cs, который, как представляется, требуется для выполнения командных строк кода в базу данных (обновление сетевых сообщений dotnet ef и обновление базы данных dotnet ef).
Причина, по которой у нас есть строка с жестким кодированием в DbConext, заключается в том, что, когда мы используем следующий код, мы получаем ссылку на объект, не установленную в экземпляр для исключения объекта, при выполнении команд dotnet ef.
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["StandardDatabase"].ConnectionString);
}
Однако, поскольку у нас есть Program.cs, если мы добавим Debug.WriteLine для строки подключения и запустим проект, она вернет правильную строку соединений, и если мы установим строку подключения в файле appsettings.json в пользовательский интерфейс, пользовательский интерфейс также будет успешно подключен.
ВЫПУСК: Вышеупомянутый стек - это то, что мы используем для нескольких "Micro Apps", что означает, что у нас есть несколько проектов, которые подключаются к нескольким базам данных. Мы также хотим использовать строки разработки, Staging и Production.
Если мы используем Connection Connection Connection String, все хорошо для ежедневных операций; однако, когда мы хотим использовать код Entity Frameworks в командных строках базы данных, нам нужно зайти в каждый репозиторий, который мы хотим обновить, и изменить DbContext на строку жесткого кодированного соединения, выполнить команды, а затем вернуть их обратно, когда это будет сделано, что становится довольно хлопотным.
ВОПРОС: Делаем ли мы это неправильно, есть ли предпочтительная практика для создания стека Entity Framework Core 1.0, который позволяет нам не вручную изменять DbContext, а использовать файлы конфигурации по всем направлениям?
Любое направление будет оценено!