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 Core を使用するには、使用するデータベース プロバイダーの 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 Core と 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 Core は作業アプリケーションの、EF Core が少ないマジックの周囲に接続するデータベースを検出します。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 Core でのこの接続文字列を使用して読み取りをConfigurationManagerAPI。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

既存の EF6 の移行を EF Core に移植可能な方法が本当にありません。There isn't really a feasible way to port existing EF6 migrations to EF Core.

可能であれば、EF6 からすべての以前の移行をデータベースに適用されているし、開始からスキーマを移行するポイントの EF Core を使用しが想定することをお勧めします。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 Core に移植したら、移行を追加するコマンド。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 Core に移植が正常にします。Just because your application compiles, does not mean it is successfully ported to EF Core. None、動作の変更と、アプリケーションが悪影響を受けることを確認するアプリケーションのすべての領域をテストする必要があります。You will need to test all areas of your application to ensure that none of the behavior changes have adversely impacted your application.