2013-11-21 4 views
5

Entity Frameworkコードの最初の移行で次のような状況に頻繁に遭遇します。いくつかの移行を追加し、データベースを正常に更新します。後で新しい移行を追加したい場合、Add-Migrationコマンドは、「次の明示的な移行が保留されているため、明示的な移行を生成できません...」という文句を言います。つまり、以前に移行されたものが既に適用されていることを忘れているように見えるので、現在保留中とみなされるべきではありません。この問題を回避しようとすると、Update-Databaseに「[新しい]保留中の変更があるため、現在のモデルと一致するようにデータベースを更新できません...」と表示されます。私がモデルを変更するだけなので、EFの移行が同期しなくなった理由は分かりません。EF追加マイグレーションは「未定の明示的なマイグレーション」を示しますが、更新データベースは「..変更が保留中です。」

+0

どのくらいの助けになるかわからないが、この質問/回答を参照してください:http://stackoverflow.com/questions/16952413/stuck-in-ef-migration-limbo – Steve

+1

ありがとうSteve。この問題は、参照が削除されてからデータベースコンテキストプロジェクトのbinフォルダから再度追加されたときにVS 2013がDLL参照(project-refとは対照的)を正しく更新しないVS 2013のバグによって発生しているようです(Clean Solutionが呼び出された場合でも)。参照プロジェクトのビンは、後続のコンパイルの後でも更新されたデータベースコンテキストDLLを表示しません。したがって、DLLのモデルは、データコンテキストプロジェクトによって既に更新されているデータベースでは古くなっています。 – CalvinDale

+3

あなた自身の質問への回答として投稿する必要があります。他の人がそれを検索すると、あなたの説明が見つかるかもしれません。 – Steve

答えて

9

私の問題は、マイグレーション2014123456_Initial.csの名前空間の名前を変更したことでした。
しかし、VSは関連する2014123456_Initial.Designer.csの名前空間を再生成しませんでした。

Designer.csが同じ名前空間を使用するように変更されると、すべてが再び機能し始めました。

+3

ありがとうございます!私は何時間も問題を見つけようと過ごす!同じもの:.Designer.csの名前空間! –

関連する問題