Подключение базы данных к .net core MVC project - PullRequest
0 голосов
/ 03 февраля 2019

Я впервые использую .NET core 2.2 и MySQL Workbench,

Я пытаюсь создать очень простой веб-сайт.

Я следовал следующему руководству Microsoft

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/working-with-sql?view=aspnetcore-2.2&tabs=visual-studio

После того, как я добавил элемент 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 ]

0 голосов
/ 03 февраля 2019

Кроме того, как настроить параметры для 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
                }
        ));
0 голосов
/ 03 февраля 2019

Я был побежден @ 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

Сообщите мне, если эта последняя команда выдает какие-либо ошибки.

0 голосов
/ 03 февраля 2019

Учебник, который вы упомянули, использует и SQL-сервер.Для подключения к серверу MySql вам нужен другой поставщик базы данных.Вы можете установить пакет Pomelo.EntityFrameworkCore.MySql nuget для Mysql.См. Страницу провайдеров *1003* в документации Microsoft.

После этого вам нужно изменить options.UseSqlServer с учебника на options.UseMySql, как описано на странице проекта провайдеров mysql .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...