0

EntityFramework 6.0.2 で dotConnect 7.3.115.0 を使用しています。

移行用のスクリプトを生成しようとすると、「要求された値 '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

「-Script」パラメーターまたは「-Verbose」パラメーターを使用する必要がありますが、両方を同時に使用することはできません。たとえば、次のように使用してみてください。

Update-Database -Script

各コマンドの詳細情報を取得するには、次を使用してください。

get-help Update-Database -detailed 
于 2014-03-25T09:06:49.823 に答える