这是我第一次使用.NET core 2.2和MySQL工作台,
我正在尝试建立一个非常基本的网站。
我遵循了以下Microsoft教程
添加脚手架项目后,我按照说明打开了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;"
}
但是我收到同样的错误。
如果有其他代码有帮助,请注意,我会发布。
答案 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
请告诉我这最后一个命令是否吐出任何错误。