Je développe des API Web dans .Net Core 2.0 avec MySQL DB. J'essaie d'échafauder MySQL DB. J'ai suivi Ce lien (site officiel MySQL) mais lorsque je lance la commande d'échafaudage, les erreurs que je mentionne ci-dessous sont signalées ci-dessous. Console du gestionnaire de paquets)
Scaffold-DbContext "server=localhost;port=3306;user=root;password=darshan7826;database=sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f
Erreur lors de l'exécution de la commande ci-dessus
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.
Après avoir creusé, j’ai trouvé que .Net Core 2.0 Mysql Connector ne fonctionnait pas correctement Après quelques recherches et RnD, j’ai trouvé Pomelo Foundation de Stack Overflow j’ai essayé et cela fonctionne.
En examinant le code source officiel du connecteur MySQL pour .Net , vous pouvez constater qu'il n'est pas encore complet pour cette raison:
public DatabaseModel Create(string connectionString,
IEnumerable<string> tables, IEnumerable<string> schemas)
{
throw new NotImplementedException();
}
Vous voudrez peut-être ouvrir un rapport de bogue sur le traqueur de bogues officiel .
Alternativement, il semble y avoir une version bêta beaucoup plus récente que vous pourriez essayer d’essayer. https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/8.0.9-dmr
Vous devriez exécuter ceci (à partir de Package-Manager-Console):
Scaffold-DbContext "Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;"
MySql.Data.EntityFrameworkCore -OutputDir Models
ou utiliser:
dotnet ef dbcontext scaffold
Remarque : Vous devriez être au projet dans lequel le package MySql.Data.EntityFrameworkCore
NuGet a été ajouté.