0

我正在使用 dotConnect 7.3.115.0 和 EntityFramework 6.0.2。

当我尝试为我的迁移生成脚本时,我收到错误“未找到请求的值‘UpdateDatabaseOperation’。”

以下是详细信息和堆栈跟踪:

PM> Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: Test -Verbose

使用启动项目“Domain.DataAccess”。
使用 NuGet 项目“Domain.DataAccess”。
目标数据库是:'TestDatabase'(数据源:localhost,提供者:Devart.Data.PostgreSql,来源:配置)。
应用显式迁移:[201403241857577_InitialCreate, 201403241941149_Test]。
应用显式迁移:201403241857577_InitialCreate。
应用显式迁移:201403241941149_Test。

System.ArgumentException: Requested value 'UpdateDatabaseOperation' was not found.
   at System.Enum.EnumResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument)
   at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult)
   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
   at Devart.Common.Entity.Migrations.a.b(MigrationOperation A_0)
   at Devart.Common.Entity.Migrations.f.a(MigrationOperation A_0)
   at Devart.Common.Entity.Migrations.f.a(IEnumerable`1 A_0)
   at Devart.Common.Entity.Migrations.c.a(IEnumerable`1 A_0, String A_1)
   at Devart.Data.PostgreSql.Entity.Migrations.PgSqlEntityMigrationSqlGenerator.Generate(IEnumerable`1 migrationOperations, String providerManifestToken)
   at System.Data.Entity.Migrations.DbMigrator.GenerateStatements(IList`1 operations, String migrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.GenerateStatements(IList`1 operations, String migrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorScriptingDecorator.ScriptUpdate(String sourceMigration, String targetMigration)
   at System.Data.Entity.Migrations.Design.ToolingFacade.ScriptUpdateRunner.Run()
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
   at System.Data.Entity.Migrations.Design.ToolingFacade.ScriptUpdate(String sourceMigration, String targetMigration, Boolean force)
   at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Requested value 'UpdateDatabaseOperation' was not found.

更新

似乎问题与使用 -SourceMigration: $InitialDatabase 生成幂等脚本有关

根据微软:

生成幂等脚本(EF6 以上)

从 EF6 开始,如果您指定 –SourceMigration $InitialDatabase,则生成的脚本将是“幂等的”。幂等脚本可以将当前任何版本的数据库升级到最新版本(如果使用 –TargetMigration,则可以升级到指定版本)。生成的脚本包含检查 __MigrationsHistory 表的逻辑,并且仅应用以前未应用的更改。

我只在使用指向 PostgreSQL 数据库的 dotConnect 时遇到此错误。使用 SQLServer 实例时,一切都按预期工作。

4

1 回答 1

1

感谢您对此的报告。我们已经复制了这个问题。

更新

我们已经更详细地调查了这个问题,它与 dotConnect for PostgreSQL 无关。该问题与 EF 工具及其中使用的命令有关:

Update-Database -Script -SourceMigration $InitialDatabase -TargetMigration: s -Verbose

必须使用“-Scr​​ipt”参数或“-Verbose”参数,但不能同时使用。请尝试使用,例如:

Update-Database -Script

要获取每个命令的详细信息,请使用:

get-help Update-Database -detailed 
于 2014-03-25T09:06:49.823 回答