EF Core への EF6 EDMX ベース モデルの移植

EF Core では EDMX ファイル形式のモデルをサポートしていません。 これらのモデルを移植する最良の方法は、アプリケーションのデータベースから新しいコードベースのモデルを生成することです。

EF Core の NuGet パッケージをインストールする

Microsoft.EntityFrameworkCore.Tools NuGet パッケージをインストールします。

モデルを再生成する

リバース エンジニアリング機能を使用して、既存のデータベースに基づくモデルを作成できるようになりました。

パッケージ マネージャー コンソールで [ツール] -> [NuGet パッケージ マネージャー] -> [パッケージ マネージャー コンソール] の順にコマンドを実行します。 テーブルのサブセットをスキャフォールディングするコマンド オプションなどについては、Visual Studio のパッケージ マネージャー コンソールを参照してください。

Scaffold-DbContext "<connection string>" <database provider name>

たとえば、SQL Server LocalDB インスタンスのブログ データベースからモデルをスキャフォールディングするコマンドを次に示します。

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

EF6 モデルを削除する

ここでは、アプリケーションから EF6 モデルを削除します。

EF6 NuGet パッケージ (EntityFramework) はインストールされたままにしておくことをお勧めします。これは EF Core と EF6 を同じアプリケーションで並列で使用できるようにするためです。 ただし、アプリケーションのどの領域でも EF6 を使用するつもりがない場合は、パッケージをアンインストールすることで、注意が必要なコード上のコンパイル エラーに注目させることができます。

コードを更新する

この時点では、コンパイル エラーに対処し、コードを見直して、EF6 から EF Core への動作変更の影響があるかどうかを確認します。

移植をテストする

アプリケーションでコンパイルされるからといって、EF Core に正常に移植されるわけではありません。 アプリケーションのすべての領域をテストして、どの動作変更もアプリケーションに悪影響を与えないことを確認する必要があります。

その他の考慮事項

EF Core は EntityClient プロバイダーをサポートしていないので、すべての EntitySQL クエリを LINQ または FromRawSql に移行する必要があります。

さらに、EntityClient 接続文字列はサポートされていません。

その他の考慮事項については、EF6 と EF Core の相違点に関する完全なガイドを参照してください。