EF core EF6 コードに基づくモデルの移植Porting an EF6 Code-Based Model to EF Core

すべての警告を読んだし、ポートする準備ができたら、し、ここでは作業を開始するためのいくつかのガイドライン。If you've read all the caveats and you are ready to port, then here are some guidelines to help you get started.

EF Core NuGet パッケージをインストールします。Install EF Core NuGet packages

EF コアを使用するのには、使用するデータベース プロバイダーの NuGet パッケージをインストールします。To use EF Core, you install the NuGet package for the database provider you want to use. たとえば、SQL Server を対象とする場合にインストールする場合Microsoft.EntityFrameworkCore.SqlServerです。For example, when targeting SQL Server, you would install Microsoft.EntityFrameworkCore.SqlServer. 参照してくださいデータベース プロバイダー詳細についてはします。See Database Providers for details.

移行を使用する予定のかどうかは、インストールすることも必要があります、Microsoft.EntityFrameworkCore.Toolsパッケージです。If you are planning to use migrations, then you should also install the Microsoft.EntityFrameworkCore.Tools package.

これは正常に EF6 NuGet パッケージ (EntityFramework) をインストールすると、そのまま EF コアおよび EF6 が同じアプリケーションに並列で使用できます。It is fine to leave the EF6 NuGet package (EntityFramework) installed, as EF Core and EF6 can be used side-by-side in the same application. ただし、アプリケーションのすべての領域で EF6 を使用する場合は、パッケージをアンインストールに役立つの注意が必要なコードのコンパイル エラーが発生します。However, if you aren't intending to use EF6 in any areas of your application, then uninstalling the package will help give compile errors on pieces of code that need attention.

名前空間をスワップします。Swap namespaces

EF6 で使用するほとんどの Api は、System.Data.Entity名前空間 (および関連するサブ名前空間)。Most APIs that you use in EF6 are in the System.Data.Entity namespace (and related sub-namespaces). 最初のコード変更をスワップするには、Microsoft.EntityFrameworkCore名前空間。The first code change is to swap to the Microsoft.EntityFrameworkCore namespace. 通常、派生コンテキスト コード ファイルで開始し、作業そこから発生すると、コンパイル エラーを修正とします。You would typically start with your derived context code file and then work out from there, addressing compilation errors as they occur.

コンテキストの構成 (接続などです。)Context configuration (connection etc.)

」の説明に従ってを確認してください EF コアは作業アプリケーションの、EF コアが少ないマジック周囲への接続にデータベースを検出します。As described in Ensure EF Core Will Work for Your Application, EF Core has less magic around detecting the database to connect to. オーバーライドする必要があります、OnConfiguringメソッドを派生のコンテキストと、データベースへの接続をセットアップするには、データベース プロバイダーの特定の API を使用します。You will need to override the OnConfiguring method on your derived context, and use the database provider specific API to setup the connection to the database.

ほとんどの EF6 アプリケーションは、アプリケーションでは、接続文字列を格納App/Web.configファイル。Most EF6 applications store the connection string in the applications App/Web.config file. EF コアで読むこの接続文字列を使用して、 ConfigurationManager API です。In EF Core, you read this connection string using the ConfigurationManager API. 参照を追加する必要があります、System.Configurationフレームワーク アセンブリをこの API を使用することです。You may need to add a reference to the System.Configuration framework assembly to be able to use this API.

public class BloggingContext : DbContext
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

コードを更新しますUpdate your code

この時点でのコンパイル エラーを修正するかどうか、動作は変更に影響するを参照してください。 コードを確認することを勧めします。At this point, it's a matter of addressing compilation errors and reviewing code to see if the behavior changes will impact you.

既存の移行Existing migrations

方法はありません実際に可能なポートの EF コアへの既存の EF6 移行します。There isn't really a feasible way to port existing EF6 migrations to EF Core.

可能であれば、EF6 から以前のすべての移行は、データベースに適用されているし、スキーマを移行することから開始ポイント EF コアを使用したと仮定することをお勧めします。If possible, it is best to assume that all previous migrations from EF6 have been applied to the database and then start migrating the schema from that point using EF Core. これを行うには、使用すると、 Add-Migration EF コアにモデルが移植された後に、移行を追加するコマンド。To do this, you would use the Add-Migration command to add a migration once the model is ported to EF Core. すべてのコードを削除すると、UpDownスキャフォールディングの移行のメソッドです。You would then remove all code from the Up and Down methods of the scaffolded migration. 次の移行は、その最初の移行がスキャフォールディングされたときにモデルに比較されます。Subsequent migrations will compare to the model when that initial migration was scaffolded.

ポートをテストします。Test the port

アプリケーションをコンパイルするためにだけ限りません EF コアが正常に移植します。Just because your application compiles, does not mean it is successfully ported to EF Core. 動作の変更のいずれもと、アプリケーションが悪影響を受けることを確認するには、アプリケーションのすべての領域をテストする必要があります。You will need to test all areas of your application to ensure that none of the behavior changes have adversely impacted your application.