我正在添加新的迁移,但是此消息显示:
无法生成显式迁移,因为以下显式迁移正在处理中:[201203170856167_left]。在尝试生成新的显式迁移之前,请应用未决的显式迁移。
谁能帮我?
我正在添加新的迁移,但是此消息显示:
无法生成显式迁移,因为以下显式迁移正在处理中:[201203170856167_left]。在尝试生成新的显式迁移之前,请应用未决的显式迁移。
谁能帮我?
Answers:
它告诉您应用程序中有一些未处理的迁移,它需要运行Update-Database
才能添加另一个迁移。
-StartupProject ContentHub.Database
Update-Database
给出>由于有待处理的更改而无法更新数据库以匹配当前模型
我有同样的问题。显然,当无法连接到数据库时,实体框架会生成此错误。因此,在搜索其他问题之前,请确保您能够访问它。
此错误也可能意味着不再识别迁移。这在更改Migrations.Configuration中的ContextKey的值后发生在我身上。解决方案只是更新数据库表“ __MigrationHistory”中的ContextKey(或还原我猜为Configuration的值)。您的应用程序中的ContextKey和命名空间应该匹配。
再次检查连接字符串。
确保您正在连接的用户仍然有权读取[__MigrationHistory]
权限和编辑模式的权限。
您也可以尝试改变连接字符串中的应用程序或Web配置文件使用集成安全性(Windows验证)作为运行附件迁移命令自己。
例如:
connectionString="data source=server;initial catalog=db;persist security info=True;Integrated Security=SSPI;"
此连接字符串将放在DbContext所在项目的App.config文件中。
你可以在命令行上的启动项目,或者你可以右键点击与该项目DbContext
,Configuration
并迁移文件夹并选择设为启动项目。我是认真的,这实际上可以有所帮助。
Integrated Security
修复效果很好!
遇到了同样的问题,并且能够通过上述答案解决一些提示:
在程序包管理器控制台中使用“ update-database -verbose”来获取迁移尝试连接的更具体的信息。(在我的案例中,帮助发现我的启动项目设置不正确...)
如果您尚未使用过Update-Database
,则可以将其删除。如果您运行了更新,请使用来回滚Update-Database -TargetMigration "NameOfPreviousMigration"
,然后将其删除。
参考:http: //elegantcode.com/2012/04/12/entity-framework-migrations-tips/
我直接从此处复制了此文本:如何撤消上一个“添加-迁移”命令?
遇到此问题时,请尝试将参数添加到您的add-migration cmdlet中。例如,指定启动项目以及连接字符串名称可以帮助EF查找目标数据库。
add-migration Delta_Defect_0973 -ConfigurationTypeName your.namespace.ContextClassName -StartUpProject DeltaProject -ConnectionStringName DeltaSQL
哪里:
Delta_Defect_0973是您的迁移名称
your.namespace.ContextClassName是迁移文件夹中您的Configuration类的名称,其前缀为全名空间。
DeltaProject是带有web.config或app.config文件的主项目的名称。
DeltaSQL是在web.config或app.config文件中定义的连接字符串的名称。
只是我的两分钱:
我的情况:
解:
为了解决这个问题,我只提供了更明确的参数:
Add-Migration -ConnectionString "Server=localhost\SQLEXPRESS;Database=YourDataBase;Trusted_Connection=True;" -ConnectionProviderName "System.Data.SqlClient" -verbose
我相信您可以在app.config文件夹中设置一个设置,以允许您默认此行为,因此您不必每次都提供明确的参数。但是,我不确定如何执行此操作。
-ConnectionStringName
是此方法的替代方法,它将按名称从配置中提取连接字符串
存在歧义,因此会出错。最好的方法是排除当前迁移文件并创建新的迁移(add-migration)文件,然后将新迁移的内容复制到排除的文件中,然后再次包含它并运行update-database命令。
update-database
命令,然后重试了add-migration
命令,它起作用了
我解决了类似的问题:
提示:-Script
如果不确定,最好将开关用于迁移命令。它也确实有助于了解什么Update-Database
实际情况。
我运行以下命令更新数据库,然后得到一个可以手动应用的脚本(或仅在不使用-Script标记的情况下再次运行)。
因为Update-Database
我会运行以下命令:
Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
哪里 SQL_AzureLive
我的配置中的命名连接字符串在。
然后,我可以验证SQL看起来正确,应用并完成。正如许多其他人所说的那样,如果连接字符串错误或无效,则会出现此错误。
对我来说,我从Migrations
文件夹中删除了迁移文件(在您的情况下为“ 201203170856167_left”),然后在Package Manager控制台中运行以下命令
Add-Migration <Parameter>
Update-Database
情境
问题
从主服务器更新后,我运行“ Add-Migration my_migration_name”,但出现以下错误:
无法生成显式迁移,因为以下显式迁移正在处理中:[201607181944091_AddExternalEmailActivity]。在尝试生成新的显式迁移之前,请应用未决的显式迁移。
因此,我运行“ Update-Database”并得到以下错误:
无法更新数据库以匹配当前模型,因为有未决的更改并且自动迁移被禁用
解
此时,重新运行“ Add-Migration my_migration_name”解决了我的问题。我的理论是,运行“ Update-Database”使一切都处于“ Add-Migration”工作所需的状态。
对于运行Add-Migration时我知道最新的数据库,我也有这个问题。只需再次运行Add-Migration命令即可解决。如上面的Robin Dorbell所建议的,怀疑连接问题。
我有一个简单的问题。当我与工作站上连接的客户端站点建立VPN连接时,VS错误地报告了此错误。问题在于DBMS安全性设置为仅接受来自我的真实本地IP的请求。只需关闭VPN即可解决问题。
就我而言,我忘记在Azure的防火墙规则中添加我的IP地址,基本上是因为我无法连接到数据库而导致出现此错误。因此,特别针对我的情况,我在Azure的数据库防火墙规则中添加了IP地址,并且一切正常。除此之外,这可能是代理/互联网连接/数据库用户名密码/数据库连接字符串等问题。或者显然,您可能需要执行Update-Database命令的挂起迁移。
就我而言(使用MS Visual Studio),它就像重新启动Visual Studio一样简单。