使用.Net Core 2.0数据库优先方法Scaffold-DbContext连接Mysql数据库。

9

我正在使用.Net Core 2.0和MySQL DB开发WEB API。我正在尝试搭建MySQL DB。我已经按照这个链接(MySQL官方网站)的说明进行操作,但是在执行搭建命令时,我遇到了下面两种错误,请告诉我是否有做错什么。

搭建命令(在程序包管理器控制台中运行):

Scaffold-DbContext "server=localhost;port=3306;user=root;password=darshan7826;database=sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f

执行上述命令时出错

System.NotImplementedException: The method or operation is not implemented.
at MySql.Data.EntityFrameworkCore.Scaffolding.Internal.MySQLDatabaseModelFactory.Create(String connectionString, IEnumerable`1 tables, IEnumerable`1 schemas)
at Microsoft.EntityFrameworkCore.Scaffolding.Internal.RelationalScaffoldingModelFactory.Create(String connectionString, IEnumerable`1 tables, IEnumerable`1 schemas, Boolean useDatabaseNames)
at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ModelScaffolder.Generate(String connectionString, IEnumerable`1 tables, IEnumerable`1 schemas, String projectPath, String outputPath, String rootNamespace, String contextName, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_1.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
The method or operation is not implemented.
3个回答

8

经过搜索后我发现,.Net Core 2.0的Mysql Connector不能正常工作。经过一些搜索和研究,我在Stack Overflow上找到了Pomelo Foundation,我尝试了它并且它能够正常工作。


4

哈哈,throw new NotImplementedException(); 这个实现方式还是比较“标准”的。 - Ivan Stoev
4
@Ivan这也是我实现所有代码的方式,你会惊讶地发现我能够多快地编写它! - DavidG
@DavidG,谢谢您的回答,您能告诉我在哪个文件中添加这个代码块吗? - Darshan Dave
2
即使最新的8.0.10-rc版本刚于2天前发布,该功能仍未实现 :( - Sunny Tambi
很奇怪,他们已经发布了,但这个函数仍未实现。 - Neville Nazerane

1
你需要在“包管理器控制台”中运行以下命令:
Scaffold-DbContext "Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;" 
MySql.Data.EntityFrameworkCore -OutputDir Models

或者使用:
dotnet ef dbcontext scaffold

注意:你应该在已添加了 MySql.Data.EntityFrameworkCore NuGet 包的项目中进行操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接