我在 NuGet 控制台中执行 PM>Enable-Migrations -Force
我捕捉到文本检查上下文是否针对现有数据库...然后是异常
System.NullReferenceException:对象引用未指向对象的实例。到 MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(DbConnection 连接) 到 System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection 连接) 到 MySql.Data.Entity.MySqlManifestTokenResolver.ResolveManifestToken(DbConnection 连接) 到 System.Data .Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest) 到 System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection) 到 System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext) 到 System.Data。 Entity.Internal.RetryLazy 2.GetValue(TInput 输入) 到 System.Data.Entity.Internal.LazyInternalContext。
在 System.Data.Entity.Internal.LazyInternalContext.get_ModelBeingInitialized() 在 System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(DbContext context, XmlWriter writer) 在 System.Data.Entity.Utilities.DbContextExtensions.<>c__DisplayClass1.b__0( XmlWriter w) 到 System.Data.Entity.Utilities.DbContextExtensions.GetModel(Action`1 writeXml) 到 System.Data.Entity.Utilities.DbContextExtensions.GetModel(DbContext context) 到 System.Data.Entity.Migrations.DbMigrator..ctor System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration 配置) 中 System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration) 到 System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run() 到 System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 到 System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 到 System.Data.Entity。 Migrations.Design.ToolingFacade.Run(BaseRunner runner) 到 System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldInitialCreate(String language, String rootNamespace) 到 System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 中的 >b__0() 对象引用不指向对象的实例。DoCallBack(CrossAppDomainDelegate callBackDelegate)到 System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)到 System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)到 System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldInitialCreate(字符串语言, String rootNamespace) in System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() in System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 对象引用不指向实例的一个对象。DoCallBack(CrossAppDomainDelegate callBackDelegate)到 System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)到 System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)到 System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldInitialCreate(字符串语言, String rootNamespace) in System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() in System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 对象引用不指向实例的一个对象。String rootNamespace) in System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() in System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 对象引用不指向实例的一个对象。String rootNamespace) in System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() in System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 对象引用不指向实例的一个对象。
尝试删除迁移文件夹 - 没有帮助。有旧的迁移,但由于某种原因,NuGet 控制台看不到它们。最有可能的是,迁移已经确定,它将有关项目的数据保存在某个地方。
版本 MySql 基础
EFv6.0
VS 2017
如何恢复迁移?还是 EF-MySql 库本身的问题?
让我们从 Configuration.cs 开始
在这里,我们转到 Context 本身
功能,包希望连接字符串中的 MySql 有一个连接字符串,在 en 所以有一个建议更改为
this("server=127.0.0.1;Database=sys;uid=root;pwd=root;Allow User Variables=True")
但是然后我们得到另一个有趣的“功能”。代码停止正常运行(出现奇怪的异常),控制台工作正常。为了摆脱这种情况,您可以编写一个函数,该函数返回 Web 应用程序的别名和控制台的连接字符串。结果是这样的:回滚并在工作中,以及三个 NuGet 控制台命令(或 Pkgmgr.exe):Enable-Migrations Add-Migration "Name"、Update-Database Work。
PS我也有一个奇怪的更新数据库异常
在这种情况下,我建议使用
Update-Database -Verbose
,那么很明显最后一个 sql 命令导致了异常,那么您需要查看数据库 - 通过更改过程代码来修复错误Up
(在迁移中较少Down()
见(Migrations 文件夹)。