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 の相違点に関する完全なガイドを参照してください。
.NET