web-dev-qa-db-ja.com

.Net Core 2.0データベースの最初のアプローチMysql DBのScaffold-DbContext

MySQL DBを使用して.Net Core 2.0で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.
8
Darshan Dave

掘り出した後、.Net Core 2.0 Mysqlコネクタが正しく機能していないことがわかりました。いくつかの検索とRnDの後、スタックオーバーフローから Pomelo Foundation を見つけて、試してみました。

7
Darshan Dave

MySQL Connector for .Net の公式ソースコードを見ると、これが原因でまだ完成していないことがわかります。

public DatabaseModel Create(string connectionString, 
    IEnumerable<string> tables, IEnumerable<string> schemas)
{
  throw new NotImplementedException();
}

公式バグトラッカー でバグレポートを開くことができます。

または、試してみることができるはるかに新しいベータ版があるようです。 https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/8.0.9-dmr

4
DavidG

これを実行する必要があります(Package-Manager-Consoleから):

Scaffold-DbContext "Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;" 
MySql.Data.EntityFrameworkCore -OutputDir Models

または使用:

dotnet ef dbcontext scaffold

MySql.Data.EntityFrameworkCore NuGetパッケージが追加されたプロジェクトにいる必要があります。

0
M. Artem