无法生成显式迁移 - 具有多个上下文/配置的实体框架 6.1.3
Posted
技术标签:
【中文标题】无法生成显式迁移 - 具有多个上下文/配置的实体框架 6.1.3【英文标题】:Unable to generate an explicit migration - Entity Framework 6.1.3 with multiple Contexts / Configurations 【发布时间】:2016-09-15 09:53:34 【问题描述】:我有一个作为内部工具集的项目。因此,我需要多个上下文。我有一个上下文设置很好,然后我开始尝试添加我的第二个上下文。我从另一个 SO question 中了解到,您需要在启用后重命名配置文件,然后在执行 Add-Migration 和 Update-Database 命令时引用新的配置文件名。我这样做并最终得到“无法生成显式迁移...”,它引用了 201605181623556_ServiceRequest,如下所示。
PM> Enable-Migrations -ContextTypeName InsideAdminContext
此时我重命名了配置文件InsideAdminConfiguration
PM> Enable-Migrations -ContextTypeName PartFinderContext
重命名配置文件PartFinderconfiguration
PM> Add-Migration "ServiceRequest" -ConfigurationTypeName InsideAdminConfiguration
PM> update-database -ConfigurationTypeName InsideAdminConfiguration
Applying explicit migrations: [201605181623556_ServiceRequest].
Applying explicit migration: 201605181623556_ServiceRequest.
Running Seed method.
PM> Add-Migration "InitialMigrationForPartFinder" -ConfigurationTypeName PartFinderConfiguration
Unable to generate an explicit migration because the following explicit migrations are pending: [201605181623556_ServiceRequest]. Apply the pending explicit migrations before attempting to generate a new explicit migration.
到目前为止,我已经删除了所有的迁移文件夹,删除了表和_MigrationHistory表并使用上面的命令重新开始,但问题仍然存在。
-----更新----- 我颠倒了上面的顺序并首先创建了 PartFinder 表,并在尝试在 ServiceRequest 上添加迁移时遇到了同样的错误。
【问题讨论】:
【参考方案1】:我在这里找到了解决方案:How do I enable EF migrations for multiple contexts to separate databases?
我缺少的部分是“bart s”的答案。配置文件需要有自己的命名空间,可以通过 Enable-Migrations -MigrationsDirectory 参数创建。在我的情况下,它转换为(我在这里有一些额外的参数,由于尝试了其他事情,可能没有必要):
Enable-Migrations -MigrationsDirectory "Migrations\InsideAdmin" -ContextTypeName InsideIIMAK.Domain.Concrete.InsideAdminContext -StartUpProjectName InsideAdmin
Enable-Migrations -MigrationsDirectory "Migrations\PartFinder" -ContextTypeName InsideIIMAK.Domain.Concrete.PartFinderContext -StartUpProjectName InsideAdmin
Add-Migration "InitialMigrationForPartFinder" -ConfigurationTypeName InsideIIMAK.Domain.Migrations.PartFinder.PartFinderConfiguration -StartUpProjectName InsideAdmin -ConnectionStringName PartFinderContext
update-database -ConfigurationTypeName InsideIIMAK.Domain.Migrations.PartFinder.PartFinderConfiguration -StartUpProjectName InsideAdmin -ConnectionStringName PartFinderContext
Add-Migration "ServiceRequest" -ConfigurationTypeName InsideIIMAK.Domain.Migrations.InsideAdmin.InsideAdminConfiguration -StartUpProjectName InsideAdmin -ConnectionStringName InsideAdminContext
update-database -ConfigurationTypeName InsideIIMAK.Domain.Migrations.InsideAdmin.InsideAdminConfiguration -StartUpProjectName InsideAdmin -ConnectionStringName InsideAdminContext
【讨论】:
以上是关于无法生成显式迁移 - 具有多个上下文/配置的实体框架 6.1.3的主要内容,如果未能解决你的问题,请参考以下文章