接続文字列名を使用してコンテキストを作成すると、その接続は期待どおりに使用されますが、移行を実行するコードでは使用されません!
そのコードは、パラメーターなしのコンストラクターを使用して新しいコンテキストを作成し、明らかにデフォルトの接続解決メカニズムを使用して、別のデータベースに接続します!! これは、私にとって非常に望ましくないデフォルトの動作のようです。Migrations が現在のコンテキスト、または少なくとも現在のコンテキストと同じ接続文字列を使用しないのはなぜですか?
何か不足していますか、それとも Code First Migrations の欠陥ですか? そして、これを回避する最善の方法は何ですか? IDbContextFactory を実装していますか? または、コンテキスト コンストラクターで Database.SetInitializer を使用してソムティングを行いますか?
実際には、例外が発生することなくデータベースにクエリを実行し(移行に依存するコードを実行しなかったため)、同時にSQLEXPRESSで完全に新しいデータベースを秘密裏に作成しました.
使用されるバージョンは、.NET 4 を使用した Entity Framework 6 です。
私の発見を証明するために、デバッガーからスクリーンプリントをいくつか追加しました。最初のものは、接続文字列 SiteSqlServer から取得された接続が実際に使用されていることを示しています。2 つ目は、データベースの初期化コードで使用される接続が異なることを示しています。3 番目は、スクリーンプリント時のスタック トレースを示しています。
(うまくいけば、印刷物が読めるようになります。拡大すると役立ちます)