将数据库连接到.net核心MVC项目

时间:2019-02-03 09:42:10

标签: c# mysql .net-core .net-core-2.2

这是我第一次使用.NET core 2.2和MySQL工作台,

我正在尝试建立一个非常基本的网站。

我遵循了以下Microsoft教程

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

添加脚手架项目后,我按照说明打开了NuGet软件包管理器,并在cli中执行了以下命令:

Add-Migration Initial Update-Database

Update-Database命令引发以下错误:

  

与网络相关或特定于实例的错误发生在   建立与SQL Server的连接。找不到服务器或   无法访问。验证实例名称正确,并且   SQL Server配置为允许远程连接。 (提供者:命名   Pipes Provider,错误:40-无法打开与SQL Server的连接)

我正在使用Bluehost(共享主机)服务器,我修改了权限,以便可以远程连接到数据库(实际上我是通过MySQL工作台连接的)

我尝试将ConnectionString更改为以下内容:

"ConnectionStrings": 
{
    "Piano3Context": "Server=162.241.*.*;Database=PianoDB;User Id=omyUsrName;password=myPass;Trusted_Connection=True;MultipleActiveResultSets=true;"
}

但是我收到同样的错误。

如果有其他代码有帮助,请注意,我会发布。

3 个答案:

答案 0 :(得分:3)

您提到的教程正在使用SQL Server。要连接到MySql服务器,您需要其他数据库提供程序。您可以为Mysql安装Pomelo.EntityFrameworkCore.MySql nuget软件包。请参阅Microsoft文档中的providers page

此后,您需要按照mysql providers project page所述将options.UseSqlServer从教程更改为options.UseMySql

答案 1 :(得分:2)

此外,这是设置MySQL选项的方法,您可以将配置字符串移动到Configuration并使用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
                }
        ));

答案 2 :(得分:1)

我被@ philipp-grathwohl打败了,您需要使用MySql并按照他的回答说在启动时对其进行配置。

更改启动方式并添加nuget软件包Pomelo.EntityFrameworkCore.MySql后,您可以使用此命令来代替它在一个命令中搭建DBContext支架并生成EF模型和上下文:

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

请告诉我这最后一个命令是否吐出任何错误。