EF Core - Table '*.__EFMigrationsHistory' n'existe pas

Je tiens à souligner que c'est .NET de Base et les discussions à ce sujet EF 6.0 ne s'applique pas à ce problème

J'ai créé mon DbContext et de l'ajouter à la DI, cependant quand je fais dotnet ef database update -v il ne veut pas créer les migrations tableau __EFMigrationsHistory.

Est-il une autre commande que je dois faire en premier ou c'est un bug de EF Base MySQL adaptateur?

MainDbContext

using Microsoft.EntityFrameworkCore;
using MySQL.Data.EntityFrameworkCore.Extensions;
using Web.Models;

namespace Web.Infrastructure
{
    public class MainDbContext : DbContext
    {
        public DbSet<User> Users { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySQL("connection-string-here");
            base.OnConfiguring(optionsBuilder);
        }
    }
}

Erreur

Trouver DbContext classes...

Utilisation d'un contexte 'MainDbContext'.

À l'aide de la base de données 'db' sur le serveur 'localhost'.

MySql.Les données.MySqlClient.MySqlException: Table 'db.__EFMigrationsHistory' n'existe pas

Table 'db.__EFMigrationsHistory' n'existe pas
``

projet.json

{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.1",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Routing": "1.0.1",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
"BundlerMinifier.Core": "2.2.301",
"WebMarkupMin.AspNetCore1": "2.2.1",
"MySql.Data.EntityFrameworkCore": "7.0.6-IR31",
"Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final"
},
"tools": {
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"**/*.cshtml",
"appsettings.json",
"web.config"
]
},
"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}

Temp Solution

Par l'exécution de dotnet ef migrations script - je obtenir le code SQL que je peut exécuter directement dans MySQL. Après que les migrations tableau est créé et tout fonctionne normalement. C'est temp-solution qui est mauvais. Je me demande encore qu'est-ce que la "bonne" façon de permettre aux migrations.

  • Veuillez spécifier les versions des paquets que vous utilisez.
  • Cette chaîne de connexion vous permet d'accéder à un compte, qui a l'autorisation de créer des tables? En d'autres termes, êtes-vous en mesure de créer la table manuellement à l'aide de cette chaîne de connexion?
  • J'ai ajouté des paquets.json. Bien sûr, j'en ai plein les autorisations de base de données. Une fois que j'ai ajouter la table manuellement les migrations de travail et mon User modèle de tableau est créé pour moi et je peux faire des activités avec elle.
  • Je viens de rencontré le même problème avec ef core + mysql en essayant de suivre docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db Ajoutez-les Migrations fonctionne ok mais la mise à Jour de la Base de données génère cette erreur
  • Une solution de contournement consiste à créer le tableau suivant manuellement avant de lancer "dotnet ef base de données mise à jour" CREATE TABLE `__EFMigrationsHistory` ( `MigrationId` nvarchar(150) NOT NULL, `ProductVersion` nvarchar(32) NOT NULL, PRIMARY KEY (`MigrationId`) );
InformationsquelleAutor Stan | 2016-11-14