Строка подключения приложения Entity Framework Core и ASP.NET Core MVC не обновляется автоматически - PullRequest
0 голосов
/ 20 марта 2019

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

Я собрал простое приложение Entity Framework Core, ASP.NET Core MVC, которое использует базу данных SQL Server, и оно запускается и работает на моем локальном тестовом компьютере.Когда я публикую в Azure (и создаю ресурсы и базу данных), строка подключения автоматически не перенаправляется в базу данных в Azure.

Если я вручную переключу его на лазурную строку, все будет работать.

Как настроить проект так, чтобы при публикации мне не приходилось вручную изменять строку подключения?

В моем приложении есть файл appsettings.json, в который я вручную ввелмои строки подключения .. например ..

"ConnectionStrings": {
    "local_abpwebtestdb": "Server=(localdb)\\mssqllocaldb;Database=Company.metrics.db1;Trusted_Connection=True;",
    "abpwebtestdb": "Server = tcp:companytestmetrics.database.windows.net,1433; Initial Catalog = postmetrics_db; Persist Security Info = False; User ID = xxxxx; Password =xxxxxxx; MultipleActiveResultSets = False; Encrypt = True; TrustServerCertificate = False; Connection Timeout = 30;"
  },

Затем в своем приложении я вручную переключаюсь между этими двумя строками:

// string con = Configuration.GetConnectionString("local_abpwebtestdb");
string con = Configuration.GetConnectionString("abpwebtestdb");

В учебниках, опубликованных MS, они используютlocal db, когда вы публикуете его, волшебным образом перенаправляет на новый в Azure.

Как работает конфигурация?(пожалуйста, сделайте вид, что у меня нет точных базовых знаний)

Спасибо!DR

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

KnuturO - спасибо за ответ!После ваших комментариев я снова проверил свои настройки и обнаружил, что имя строки подключения на странице настроек консоли / приложения Azure было «defaultconnection» - что мне показалось нормальным ... но не так.Изменение в соответствии с именем моей строки подключения (например, abpwebtestdb) добилось цели.

Спасибо за толчок, чтобы посмотреть снова, и он работает сейчас.

С уважением, DR

0 голосов
/ 20 марта 2019

Если это приложение MVC .net core, база данных должна быть настроена в Startup.cs как показано здесь Новая база данных MS docs

Добавьте код в Startup.cs ConfigureServices, он будет выглядеть примерно так:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(
                Configuration.GetConnectionString("abpwebtestdb")));
}

Теперь, когда соединение Db правильно настроено при запуске, вы пишете новый конструктор для ваших контроллеров, которым требуется соединение с БД.

Как это:

private readonly ApplicationDbContext _context;

public HomeController(ApplicationDbContext context)
{
    _context = context;
}
...