108

新しい移行を追加していますが、次のメッセージが表示されます。

次の明示的な移行が保留中のため、明示的な移行を生成できません: [201203170856167_left]。新しい明示的な移行を生成する前に、保留中の明示的な移行を適用してください。

誰でも私を助けることができますか?

4

29 に答える 29

91

アプリケーションに未処理の移行がありUpdate-Database、別の移行を追加する前に実行する必要があることを示しています。

于 2012-03-22T09:27:10.330 に答える
65

私も同じ問題を抱えていました。データベースに接続できない場合、エンティティ フレームワークがこのエラーを生成するようです。そのため、他の問題を探す前に、アクセスできることを確認してください。

于 2015-07-31T09:37:17.987 に答える
40

パッケージ マネージャー コンソールから "update-database" を実行して変更をデータベースにプッシュするか、保留中の移行ファイル ([201203170856167_left]) を Migrations フォルダーから削除してから "add-migration" を再実行して、編集に基づいて新しい移行を作成します。

于 2014-02-07T03:12:19.460 に答える
36

このエラーは、移行が認識されなくなったことを意味する場合もあります。これは、Migrations.Configuration の ContextKey の値を変更した後に発生しました。解決策は、単にデータベース テーブル「__MigrationHistory」の ContextKey を更新すること (または、Configuration クラスの値を元に戻すこと) でした。アプリケーションの ContextKey と Namespace は一致する必要があります。

于 2015-10-11T19:41:52.907 に答える
10

同じ問題があり、上記の回答からのいくつかのヒントで解決できました:

  • パッケージ マネージャー コンソールで、既定のプロジェクトを確認します (移行構成のプロジェクトをポイントします)。
  • startup-proj に有効な接続文字列 (または
  • 移行を含むプロジェクトに、有効な接続文字列を持つ app.config / web.config があることを確認します
  • DB のアクセス許可を確認します (接続文字列で構成されたユーザーの場合)

パッケージ マネージャー コンソールで "update-database -verbose" を使用して、移行が接続を試みるより具体的な情報を取得します。(私の場合、スタートアッププロジェクトが正しく設定されていないことがわかりました...)

于 2016-09-29T08:19:21.277 に答える
7

使用していない場合Update-Databaseは、削除するだけです。更新を実行した場合は、 を使用してロールバックしUpdate-Database -TargetMigration "NameOfPreviousMigration"、削除してください。

参照: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

このテキストをここから直接コピーしました: How do I undo the last Add-Migration command?

于 2014-05-01T18:34:49.257 に答える
4

ちょうど私の2セント:

私のシナリオ:

  1. ローカル データベースを動作状態に復元しました。
  2. すでに移行が適用されています。
  3. OPで述べたように、新しい移行を追加しようとするたびに、保留中の移行に関するエラーが発生しました。

解決:

これを回避するために、より明示的なパラメーターを提供しました。

Add-Migration -ConnectionString "Server=localhost\SQLEXPRESS;Database=YourDataBase;Trusted_Connection=True;" -ConnectionProviderName "System.Data.SqlClient" -verbose

app.config フォルダーに設定を設定して、この動作をデフォルトに設定できるので、毎回明示的なパラメーターを指定する必要はないと思います。ただし、これを行う方法がわかりません。

于 2016-11-17T11:04:04.680 に答える
2

多くの人にとってこれは答えではありませんが、EF は DB に接続できない場合にこのエラーをチャックします。私のように自宅で仕事をしている場合は、VPN に接続していることを確認してください。

于 2020-06-16T14:36:16.387 に答える
1

私は同じ問題を抱えていて、 Add-Migration 'MigrationName' -Force を実行して解決することしかできませんでした

-Force が重要な部分です。

于 2016-09-21T08:54:22.567 に答える
1

ヒント:-Scriptよくわからない場合は、移行コマンドにスイッチを使用することをお勧めします。また、Update-Database実際に何が行われているかを理解するのにも役立ちます。

以下を実行してデータベースを更新すると、手動で適用できるスクリプトが取得されます (または -Script タグなしで再度実行します)。

私はUpdate-Database次を実行します:

Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive

SQL_AzureLive構成内の名前付き接続文字列はどこにありますか。

次に、SQL が正しく表示されることを確認し、適用して完了です。他の多くの人が言っているように、接続文字列が間違っているか無効である場合、このエラーが発生します。

于 2018-02-22T22:56:06.750 に答える
0

私もこの問題に遭遇しました。新しいDBを作成し、コードファーストのDB移行のために保留中の変更があり、「Update-Database」コマンドを実行しようとしたときに発生しました。解決策 : 「Add-Migration -MigrationName」コマンドを実行して、新しい DB の新しい移行を作成します。次に、「Update-Database」コマンドを実行します。

于 2016-09-15T06:47:41.323 に答える
0

シナリオ

  • 新しい DB 移行を作成したブランチで作業しています。
  • マスターから更新する準備ができていますが、マスターにも最近の DB 移行があります。
  • 競合を防ぐために、ブランチのデータベース移行を削除します。
  • 私は「マスターから更新」します。

問題

マスターから更新した後、「Add-Migration my_migration_name」を実行しましたが、次のエラーが発生しました。

次の明示的な移行が保留中のため、明示的な移行を生成できません: [201607181944091_AddExternalEmailActivity]。新しい明示的な移行を生成する前に、保留中の明示的な移行を適用してください。

そのため、「Update-Database」を実行すると、次のエラーが発生します。

保留中の変更があり、自動移行が無効になっているため、現在のモデルに一致するようにデータベースを更新できません

解決

この時点で、「Add-Migration my_migration_name」を再実行すると問題が解決しました。私の理論では、「Update-Database」を実行すると、「Add-Migration」が機能するために必要なすべての状態になったということです。

于 2016-07-21T16:22:12.903 に答える
0

Add-Migration の実行時に最新であることがわかっているデータベースでも、この問題が発生しました。Add-Migration コマンドをもう一度実行するだけで解決しました。上記の Robin Dorbell が示唆するように、接続の問題が疑われます。

于 2016-09-23T06:16:59.650 に答える
0

古い投稿ですが、誰かを助けるかもしれません。私にとっては、プロジェクトの名前を変更Assembly nameしたために起こりました。そのため、テーブル内をorの新しい値Default namespaceに更新する必要がありました。正直なところ、どちらを使用すればよいかわかりません。私にとってはどちらも同じだからです。ContextKey_MigrationHisotryAssembly nameDefault namespace

于 2020-10-28T13:16:26.323 に答える
-1

移行から別の移行に戻した直後に、まったく同じ問題が発生しました。

私の場合、「migration06」から「migration04」への「ターゲット移行」を行いました。

「migration0」6 を削除する必要がありましたが、「migration05」を強制的に作成することができました。これは基本的に、対象の移行の後に次の移行を保持する必要があることを意味します。

于 2017-11-16T08:16:05.823 に答える