Подключение базы данных к.net core MVC project
Я впервые использую.NET core 2.2 и MySQL,
Я пытаюсь создать очень простой сайт.
Я следовал следующему руководству Microsoft
После добавления элемента Scaffolded я следовал инструкциям, открыл менеджер пакетов NuGet и выполнил следующие команды в cli:
Add-Migration Initial
Update-Database
Update-Database
Команда вызвала следующую ошибку:
При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server)
Я работаю с сервером Bluehost (Shared Host), я изменил разрешения, чтобы я мог удаленно подключаться к базе данных (и действительно я подключен через MySQL Workbench)
Я попытался изменить ConnectionString следующим образом:
"ConnectionStrings":
{
"Piano3Context": "Server=162.241.*.*;Database=PianoDB;User Id=omyUsrName;password=myPass;Trusted_Connection=True;MultipleActiveResultSets=true;"
}
и все же я получаю ту же ошибку.
Если любой другой код поможет, пожалуйста, обратите внимание, и я буду публиковать.
3 ответа
Учебник, который вы упомянули, использует и SQL-Server. Для подключения к серверу MySql вам нужен другой поставщик базы данных. Вы можете установить Pomelo.EntityFrameworkCore.MySql
пакет nuget для Mysql. Смотрите страницу провайдеров в документации Microsoft.
После этого вам нужно изменить options.UseSqlServer
из учебника в options.UseMySql
как описано на странице проекта провайдеров MySQL.
Кроме того, как настроить параметры для MySQL, вы можете переместить строку конфигурации в конфигурацию и использовать метод GetConnectionString.
services.AddDbContextPool<MvcMovieContext>(
options => options.UseMySql("Server=localhost;Database=ef;User=root;Password=123456;",
mySqlOptions =>
{
mySqlOptions.ServerVersion(new Version(5, 7, 17), ServerType.MySql); // replace with your Server Version and Type
}
));
Я был избит @philipp-grathwohl, вам нужно использовать MySql и настроить его при запуске, как говорит его ответ.
Вместо этого вы можете использовать эту команду, которая Scaffolds DBContext и генерирует модели и контекст EF в одной команде после того, как вы изменили запуск и добавили пакет nuget Pomelo.EntityFrameworkCore.MySql
:
Scaffold-DbContext "Server=<ip>;Initial Catalog=PianoDB;Persist Security Info=False;User ID=<username>;Password=<password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -context Piano3Context -force
Дайте мне знать, если эта последняя команда выплевывает какие-либо ошибки.