【发布时间】:2017-09-07 07:08:44
【问题描述】:
我在 .net core 1.1 中使用个人用户帐户身份创建新项目。我在 Startup.cs 中添加 MySql 提供程序:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")));
但是当我尝试做update-database 时,我得到这样的错误:
MySql.Data.MySqlClient.MySqlException: Table 'cloud.__EFMigrationsHistory' doesn't exist at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLRelationalCommand.Execute(IRelationalConnection connection, String executeMethod, IReadOnlyDictionary`2 parameterValues, Boolean closeConnection)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Tools.Cli.DatabaseUpdateCommand.<>c__DisplayClass0_0.<Configure>b__0()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)
Table 'cloud.__EFMigrationsHistory' doesn't exist
我该怎么办?
【问题讨论】:
-
这与 ASP.NET Core 或 MySQL 无关。这是当您尝试 update 而不是创建数据库时出现在 all 版本中的实体框架错误。该消息解释了原因 - EF 用于检查已应用哪些迁移的迁移历史记录表丢失
-
但是为什么会出现这个错误?这是在模板中添加了标准 asp.net 核心标识的新项目。
-
因为 provider 可能有 bug 而没有创建表。发生例如2 years ago with the Postgres provider
-
这不是在.net core 1.1 中使用带有asp.net 身份的MySql 吗?
标签: c# mysql entity-framework asp.net-core entity-framework-core