Ошибка "Запрошенное значение" UpdateDatabaseOperation "не найдено" при попытке создать идемпотентный скрипт Code First Migration "

Я использую 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

По Microsoft:

Генерация идемпотентных сценариев (EF6 и далее)

Начиная с EF6, если вы укажете –SourceMigration $InitialDatabase, то сгенерированный скрипт будет "идемпотентным". Сценарии Idempotent могут обновить базу данных в любой версии до последней версии (или до указанной версии, если вы используете –TargetMigration). Сгенерированный скрипт содержит логику для проверки таблицы __MigrationsHistory и применения только тех изменений, которые ранее не применялись.

Я сталкиваюсь с этой ошибкой только при использовании dotConnect, указывающего на базу данных PostgreSQL. Все работает, как и ожидалось при использовании экземпляра SQLServer.

1 ответ

Решение

Спасибо за отчет по этому вопросу. Мы воспроизвели эту проблему.

ОБНОВИТЬ

Мы изучили проблему более подробно, и она не связана с dotConnect для PostgreSQL. Проблема связана с инструментом EF и используемой в нем командой:

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

Необходимо использовать параметр -Script или параметр -Verbose, но не оба одновременно. Пожалуйста, попробуйте использовать, например:

Update-Database -Script

Чтобы получить подробную информацию для каждой команды, пожалуйста, используйте:

get-help Update-Database -detailed