質問: `DbContext.Database.Migrate`を呼び出そうとしたときにこの例外が発生しました。これはネット上ではあまり一般的ではないように見えます(またはGoogleが検索に問題を抱えていますか?)。私が見つけることができる唯一の原因は`in-memory`データベースまたは`relational`ではない何らかの種類のプロバイダーによるものですか? しかし、デバッグ時には、プロバイダー名が`Oracle.EntityFrameworkCore`であることが`Oracle.EntityFrameworkCore 2.19.30` (Oracleデータベースに接続するために) `Oracle.EntityFrameworkCore 2.19.30`を使用しています。だから、これは今混乱している、私はここで何が間違っているのかわからない。 コードは次のように簡単です。 ``` _dbContext.Database.Migrate(); ```
回答: スローされる例外は非常に紛らわしいと思います。 `RelationalDatabaseFacadeExtensions.GetRelationalService`のソースコードを調べて、 `TService`が何とかロードされていないことを確認する`TService`がありました。そのサービスの種類はいくつかのdllに含まれている可能性があります(最も可能性の高いものは`Microsoft.EntityFrameworkCore.Relational.dll`であり、そのdllが正しくロードされない場合、説明されている例外をスローします。 実際、私の場合、そのdllは間違ったバージョンでロードされています( `Microsoft.EntityFrameworkCore`バージョンは2.2.6.0ですが、2.2.4.0がロードされてい`Microsoft.EntityFrameworkCore` )。これらはすべて、プロジェクトで厳密に参照せずに動的にロードしようとしたときに発生しました。