Entity framework 无法在实体框架中生成显式迁移
我正在添加新迁移,但此消息显示: 由于以下原因,无法生成显式迁移 显式迁移挂起:[201203170856167_左]。应用 在尝试生成新文件之前挂起显式迁移 显式迁移Entity framework 无法在实体框架中生成显式迁移,entity-framework,entity-framework-migrations,Entity Framework,Entity Framework Migrations,我正在添加新迁移,但此消息显示: 由于以下原因,无法生成显式迁移 显式迁移挂起:[201203170856167_左]。应用 在尝试生成新文件之前挂起显式迁移 显式迁移 有人能帮我吗?它告诉您,您的应用程序中有一些未经处理的迁移,需要运行更新数据库,然后才能添加另一个迁移 您需要从package manager控制台运行“更新数据库”以将更改推送到数据库,或者您可以从迁移文件夹中删除挂起的迁移文件([201203170856167_left]),然后重新运行“添加迁移”根据您的编辑创建一个全新的
有人能帮我吗?它告诉您,您的应用程序中有一些未经处理的迁移,需要运行
更新数据库
,然后才能添加另一个迁移 您需要从package manager控制台运行“更新数据库”以将更改推送到数据库,或者您可以从迁移文件夹中删除挂起的迁移文件([201203170856167_left]),然后重新运行“添加迁移”根据您的编辑创建一个全新的迁移。如果您没有使用更新数据库
,您可以将其删除。如果已运行更新,请使用更新数据库-TargetMigration“NameOfPreviousMigration”
将其回滚,然后将其删除
参考:
我直接从这里复制了这段文字:我也有同样的问题。显然,实体框架在无法连接到数据库时会生成此错误。因此,在搜索其他问题之前,请确保您能够访问它。此错误还可能意味着无法再识别迁移。我在Migrations.Configuration中更改了ContextKey的值后发生了这种情况。
解决方案只是更新数据库表“uu MigrationHistory”中的ContextKey(或者还原配置类中的值)。应用程序中的ContextKey和命名空间应匹配。遇到此问题时,请尝试向add migration cmdlet添加参数。例如,指定启动项目以及连接字符串名称可以帮助EF找到目标数据库
add-migration Delta_Defect_0973 -ConfigurationTypeName your.namespace.ContextClassName -StartUpProject DeltaProject -ConnectionStringName DeltaSQL
其中:
Delta_Defect_0973是迁移的名称
您的.namespace.ContextClassName是迁移文件夹中配置类的名称,前缀为全名空间
DeltaProject是包含web.config或app.config文件的主项目的名称
DeltaSQL是在web.config或app.config文件中定义的连接字符串的名称。1。连接字符串/连接权限
再次检查连接字符串
确保与您连接的用户仍有权从[\uu MigrationHistory]
读取内容,并有权编辑架构
您还可以尝试更改应用程序或Web配置文件中的连接字符串,以使用(Windows Auth)以自己的身份运行添加迁移命令
例如:
connectionString="data source=server;initial catalog=db;persist security info=True;Integrated Security=SSPI;"
此连接字符串将位于DbContext所在项目的App.config文件中
2.启动项目
您可以在命令行上指定启动项目,也可以右键单击带有DbContext
、Configuration
和Migrations文件夹的项目,然后选择设置为启动项目。我是认真的,这确实有帮助
场景
- 我在一家分支机构工作,在那里我创建了一个新的DB迁移
- 我已经准备好从master更新,但是master最近也进行了DB迁移李>
- 我删除分支的db迁移以防止冲突
- 我是“从主机更新”
此时,重新运行“添加迁移我的\u迁移\u名称”解决了我的问题。我的理论是,运行“更新数据库”使所有内容都处于“添加迁移”工作所需的状态。此错误意味着在执行另一个显式迁移之前,需要提交挂起的迁移。你可以选择
希望能有所帮助我也遇到了这个问题。当我创建了新的数据库,并且我的代码有了挂起的更改,首先是数据库迁移,然后我尝试运行“更新数据库”命令。解决方案:运行“addmigration-MigrationName”命令为新数据库创建新迁移。然后运行“更新数据库”命令 我也有同样的问题,只能通过添加迁移“MigrationName”-Force来解决
其中-Force是重要的一部分。对于一个运行添加迁移时知道是最新的数据库,我也遇到了这个问题。只需再次运行addmigration命令即可解决此问题。根据上面Robin Dorbell的建议,怀疑存在连接问题。也有同样的问题,并且能够通过以上答案中的一些提示来解决:
- 在PackageManager控制台中,检查默认项目(指向具有迁移配置的项目)
- 确保启动项目的web.config具有有效的connectionstring( 或
- 确保迁移项目的app.config/web.config具有有效的connectionstring
- 检查数据库中的权限(针对在connectionstring中配置的用户) <
Add-Migration -ConnectionString "Server=localhost\SQLEXPRESS;Database=YourDataBase;Trusted_Connection=True;" -ConnectionProviderName "System.Data.SqlClient" -verbose
Add-Migration <Parameter>
Update-Database