Основная ошибка Entity Framework: Произошла ошибка при подключении к базе данных на сервере localhost - PullRequest
0 голосов
/ 25 апреля 2020

Я создал ASP.NET Core 3.1 веб-приложение и хочу использовать MySQL в качестве базы данных.

Я следую наряду с некоторыми учебниками YouTube по созданию MySQL database с ASP.NET Core 3.1 [первый подход к коду] включая руководство с этого сайта:

https://docs.microsoft.com/en-us/aspnet/core/data/ef-rp/intro?view=aspnetcore-3.1&tabs=visual-studio

Я создал DataModel Class, добавил службу в UseMySQL классу Startup.cs и создан AppDBContext Class, который реализует DbContext Class.

Когда я запускаю эту команду в Консоль диспетчера пакетов : Add-Migration InitialDatabase приложение создание миграции успешно.

Когда я запускаю update-database, оно выдает это исключение:

fail: Microsoft.EntityFrameworkCore.Database.Connection[20004]
      An error occurred using the connection to database '' on server 'localhost'.
An error occurred using the connection to database '' on server 'localhost'.
System.InvalidOperationException: An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySQL' call.

Когда я вызываю функцию EnableRetryOnFailure();, как требуется, я сталкиваюсь с этим исключением:

ошибка: Microsoft.EntityFrameworkCore.Database.Connection [20004] Произошла ошибка при подключении к базе данных '' на сервере 'localhost'. Произошла ошибка при подключении к базе данных '' на сервере 'localhost'.

В чем может быть проблема? Где я ошибаюсь?

Если у вас есть ссылки на полезные статьи об использовании MySQL Database с ASP.NET Core, я был бы признателен за вашу помощь по этому конкретному вопросу.

Я использую Visual Studio IDE 2019 и ASP. NET Core 3.1.1

Дополнительный код:

Это класс Startup.cs:

private IConfiguration _configuration;
public Startup(IConfiguration configuration)
{
    _configuration = configuration;
}

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();

    // database connection string configuration  
    services.AddDbContextPool<AppDBContext>(options => options.UseMySql(_configuration.GetConnectionString("DatabaseConnectionString"),
        mySqlOptionsAction: options => { options.EnableRetryOnFailure(); }
        ));

    services.AddMvc();
}

Это строка подключения в настройках приложения. json:

  "ConnectionStrings": {
    "DatabaseConnectionString": "Server=localhost;Database=MyAppDB;user=root;Password=123;"
  }

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Вы можете попробовать этот способ

  1. Установить пакет Pomelo.EntityFrameworkCore. MySQL

  2. Добавить услуги на Startup.cs

    services.AddCors (); services.AddDbContext (options => options.Use MySql (Configuration.GetConnectionString ("DatabaseConnectionString")));

  3. изменить строку подключения в appsettings. json

    "ConnectionStrings": {"DatabaseConnectionString": "server = localhost; порт = 3306; база данных = MyAppDB; пользователь = root; пароль ="}

    * изменить номер порта в соответствии с на ваш MySQL сервер

    4.Запустите эти запятые на Консоль диспетчера пакетов для переноса данных Add-Migration InitialCreate

    Update-Database

Вы можете посмотреть проект на github , для лучшего понимания

0 голосов
/ 25 апреля 2020

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

https://www.c-sharpcorner.com/UploadFile/suthish_nair/how-to-generate-or-find-connection-string-from-visual-studio/

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

Update-Database -Verbose 
 -ConnectionString "CONNECTIONSTRING" 
 -ConnectionProviderName "System.Data.SqlClient"
 -StartupProjectName WEBSITE_PROJECT -ProjectName MIGRATION_PROJECT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...