新しい移行を追加していますが、このメッセージは次のことを示しています。
次の明示的な移行が保留中のため、明示的な移行を生成できません:[201203170856167_left]。新しい明示的な移行を生成する前に、保留中の明示的な移行を適用します。
誰でも私を助けることができますか?
アプリケーションに未処理の移行があり、別の移行を追加する前にUpdate-Database
を実行する必要があることがわかります。
同じ問題がありました。どうやらエンティティフレームワークは、データベースに接続できないときにこのエラーを生成します。そのため、他の問題を検索する前にアクセスできることを確認してください。
パッケージマネージャーコンソールから "update-database"を実行してデータベースに変更をプッシュする必要がありますOR移行フォルダーから保留中の移行ファイル([201203170856167_left])を削除してから再実行「追加移行」を使用して、編集に基づいて新しい移行を作成します。
このエラーは、移行がもはや認識されないことも意味します。これは、Migrations.ConfigurationのContextKeyの値を変更した後に起こりました。解決策は、単にデータベーステーブル「__MigrationHistory」のContextKeyを更新する(または、推測されるConfigurationクラスの値を元に戻す)ことでした。 ContextKeyとアプリケーションの名前空間は一致する必要があります。
接続文字列をもう一度確認してください。
接続しているユーザーstillが[__MigrationHistory]
からの読み取り権限を持ち、スキーマを編集する権限を持っていることを確認してください。
Integrated Security ((Windows Auth)を使用して、アプリケーションまたはWeb構成ファイルの接続文字列を変更して試すこともできます。 add-migrationコマンドはyourselfとして。
例えば:
connectionString="data source=server;initial catalog=db;persist security info=True;Integrated Security=SSPI;"
この接続文字列は、DbContextが配置されているプロジェクトのApp.configファイルに入ります。
コマンドラインでStartupプロジェクトを指定するか、DbContext
、Configuration
およびMigrationsフォルダーでプロジェクトを右クリックして、StartUpプロジェクトとして設定することができます。私は真剣です、これは実際に助けることができます。
同じ問題があり、上記の回答からいくつかのヒントで解決できました:
パッケージマネージャーコンソールで "update-database -verbose"を使用して、移行が接続を試みる特定の情報を取得します。 (私の場合、スタートアッププロジェクトが正しく設定されていないことを確認するのに役立ちました...)
この問題が発生した場合は、add-migrationコマンドレットにパラメーターを追加してみてください。たとえば、起動プロジェクトと接続文字列名を指定すると、EFがターゲットデータベースを見つけるのに役立ちます。
add-migration Delta_Defect_0973 -ConfigurationTypeName your.namespace.ContextClassName -StartUpProject DeltaProject -ConnectionStringName DeltaSQL
どこ:
Delta_Defect_097は移行の名前です
your.namespace.ContextClassNameは、移行フォルダー内の構成クラスの名前であり、完全な名前空間が先頭に付きます。
DeltaProjectは、web.configまたはapp.configファイルを含むメインプロジェクトの名前です。
DeltaSQLは、web.configまたはapp.configファイルで定義されている接続文字列の名前です。
Update-Database
を使用していない場合は、削除できます。更新を実行した場合、Update-Database -TargetMigration "NameOfPreviousMigration"
を使用してロールバックし、削除します。
参照: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
このテキストをここから直接コピーしました。 最後のAdd-Migrationコマンドを元に戻すにはどうすればよいですか?
このエラーは、別の明示的な移行を実行する前にコミットする必要がある保留中の移行があることを意味します。選ぶことができます
この後、「Add-Migration ...」を再度開始できます
それが役に立てば幸い
あいまいさがあり、エラーがあります。最善の方法は、現在の移行ファイルを除外し、新しいmigration(add-migration)ファイルを作成してから、新しい移行の内容を除外ファイルにコピーし、それを再度含めてpdate-databaseコマンド。
ちょうど私の2セント:
私のシナリオ:
解決:
これを回避するために、私はただより明示的なパラメータを提供しました:
Add-Migration -ConnectionString "Server=localhost\SQLEXPRESS;Database=YourDataBase;Trusted_Connection=True;" -ConnectionProviderName "System.Data.SqlClient" -verbose
App.configフォルダーに設定を設定して、この動作をデフォルトに設定できるため、毎回明示的なパラメーターを指定する必要がないと考えています。しかし、私はこれを行う方法がわかりません。
ローカルデータベースに__MigrationHistory
が入力されていなかったか、存在していませんでした。テーブルを手動で作成し、そのテーブルのデータをPRODからローカルデータベースに移行しました。これにより、VSは移行が適用されたと見なしました(移行されていた)。
ヒント:わからない場合は、移行コマンドに-Script
スイッチを使用することを常にお勧めします。また、Update-Database
が実際に行うことを理解するのにも役立ちます。
次を実行してデータベースを更新し、手動で適用できるスクリプトを取得します(または-Scriptタグなしで再度実行します)。
Update-Database
の場合、次を実行します。
Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
ここで、SQL_AzureLive
は私の設定の名前付き接続文字列です。
その後、SQLが正しく見えることを確認し、適用して完了します。他の多くの人が接続文字列が間違っているか無効であると言っているように、このエラーが発生します。
私はこのような同じ問題を解決しました:
私は同じ問題を抱えていましたが、Add-Migration 'MigrationName' -Forceを実行するだけで解決できました
-Forceは重要な部分です。
別の方法でやりました。データベースを完全に削除し、vs。で再度「update-database」を実行しました。
私もこの問題に出会いました。新しいDBを作成し、コードファーストDB移行の保留中の変更があり、「データベースの更新」コマンドを実行しようとしたときに発生しました。解決策:「Add-Migration -MigrationName」コマンドを実行して、新しいDBの新しい移行を作成します。次に、「Update-Database」コマンドを実行します。
私の場合(MS Visual Studioを使用)、Visual Studioを再起動するのと同じくらい簡単でした。
これは、dbにすでに存在する古い移行のクラスの名前を突然変更したときに起こりました。 VCSの履歴を確認し、それを確認して名前を変更しました。すべてがその後働いた。
私の場合、Migrations
フォルダーから移行ファイル(あなたの場合は「201203170856167_left」)を削除し、パッケージマネージャーコンソールで以下のコマンドを実行しました
Add-Migration <Parameter>
Update-Database
Add-Migrationを実行したときに最新であることがわかっていたデータベースでも、この問題が発生しました。 Add-Migrationコマンドを2回実行するだけで解決しました。上記のRobin Dorbellが示唆したように、接続の問題が疑われます。
シナリオ
問題
マスターから更新した後、「Add-Migration my_migration_name」を実行しますが、次のエラーが表示されます。
次の明示的な移行が保留中のため、明示的な移行を生成できません:[201607181944091_AddExternalEmailActivity]。新しい明示的な移行を生成する前に、保留中の明示的な移行を適用します。
したがって、「Update-Database」を実行すると、次のエラーが表示されます。
保留中の変更があり、自動移行が無効になっているため、現在のモデルに一致するようにデータベースを更新できません
ソリューション
この時点で、「Add-Migration my_migration_name」を再実行すると問題が解決しました。私の理論では、「Update-Database」を実行すると、「Add-Migration」が機能するために必要な状態ですべてが取得されたということです。
もっと簡単な問題がありました。 VSは、ワークステーションに接続されたクライアントのサイトにVPN接続したときに、このエラーを誤って報告しました。問題は、DBMSセキュリティが、実際のローカルIPからの要求のみを受け入れるように設定されていたことです。 VPNをオフにするだけで問題は解決しました。