3

私は Entity Framework Migrations & Code First を使用していますが、最近非常に奇妙な問題に遭遇しました。この問題は、バージョン 4.3.1 および 4.4 で再現されました。

EF は、実際には変更されていないのに、コンテキストが変更されたと考えています。ソリューションのパスを変更すると発生します。例: ソリューションが C:\integration\something.sln にある場合、移行は機能する可能性がありますが、パスを C:\development\something.sln に変更してソリューションを再ビルドすると、移行によって例外がスローされます。データベースに保留中の変更があると言っています。(もちろん、ソースコードに変更はありません。

IL 逆アセンブラーを使用して出力アセンブリのダンプを作成し、BeyondCompare を使用して違いがあることを確認しました。データは同じだと思いますが、異なる順序で書かれています...

コンテキストに変更があったかどうかを EF が判断する方法は? アセンブリ チェックサムが異なって、変更があったと EF に思わせる可能性はありますか?

どんなアイデアでも大歓迎です...

4

1 に答える 1

2

まず、これは移行の問題ではありません。データベースに変更があるかどうかを確認するためのEntityFrameworkのアルゴリズムのバグである可能性があります。

プロパティのない抽象クラスを含むクラス階層があり、そのクラスを抽象ではなくして問題を解決しました。

貴重なデバッグ経験を積んだ後、この問題を解決するいくつかの方法を見つけました。それぞれが以前よりも眉を上げていたため、非常にまれなコーナーケースに陥ったと確信しました。私が言ったように、私はクラスを抽象的ではないものにすることによって解決することに決めました。

バグをクリーンなソリューションで再現してMicrosoftに送信できるようにしましたが、これまでは実際には機能しませんでした。

つまり...要約すると、このような問題(非常に苛立たしい問題)に気付いた場合は、抽象クラスを探すことをお勧めします。

于 2012-09-02T22:16:11.697 に答える