Portando um EF6 baseada em código modelo EF CorePorting an EF6 Code-Based Model to EF Core

Se você leu todos os avisos e você está pronto para a porta, aqui estão algumas diretrizes para ajudá-lo a começar.If you've read all the caveats and you are ready to port, then here are some guidelines to help you get started.

Instalar os pacotes NuGet do núcleo de EFInstall EF Core NuGet packages

Para usar o EF Core, você pode instalar o pacote NuGet para o provedor de banco de dados que você deseja usar.To use EF Core, you install the NuGet package for the database provider you want to use. Por exemplo, durante o direcionamento do SQL Server, você deve instalar Microsoft.EntityFrameworkCore.SqlServer.For example, when targeting SQL Server, you would install Microsoft.EntityFrameworkCore.SqlServer. Consulte provedores de banco de dados para obter detalhes.See Database Providers for details.

Se você estiver planejando usar migrações, você também deve instalar o Microsoft.EntityFrameworkCore.Tools pacote.If you are planning to use migrations, then you should also install the Microsoft.EntityFrameworkCore.Tools package.

Há problema em manter o pacote do NuGet EF6 (EntityFramework) instalado, como EF Core e EF6 podem ser usada lado a lado no mesmo aplicativo.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. No entanto, se você não pretender usar EF6 em todas as áreas do seu aplicativo, em seguida, desinstalar o pacote permitirão que os erros de compilação em trechos de código que precisam de atenção.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.

Namespaces de trocaSwap namespaces

A maioria das APIs que você use EF6 estão no System.Data.Entity namespace (e relacionados subnamespaces).Most APIs that you use in EF6 are in the System.Data.Entity namespace (and related sub-namespaces). A primeira alteração de código é alternar para o Microsoft.EntityFrameworkCore namespace.The first code change is to swap to the Microsoft.EntityFrameworkCore namespace. Você teria iniciam normalmente com seu arquivo de código do contexto derivada e, em seguida, calcular a partir daí, erros de compilação de endereçamento que eles ocorrem.You would typically start with your derived context code file and then work out from there, addressing compilation errors as they occur.

Configuração de contexto (conexão etc.)Context configuration (connection etc.)

Conforme descrito em garantir EF será trabalho para seu aplicativo, Core EF tem menos magic em torno de detectar o banco de dados para se conectar ao.As described in Ensure EF Core Will Work for Your Application, EF Core has less magic around detecting the database to connect to. Você precisará substituir o OnConfiguring método no contexto derivado e use a API específica do provedor de banco de dados para a conexão ao banco de dados de configuração.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.

A maioria dos aplicativos de EF6 armazenar a cadeia de caracteres de conexão em aplicativos App/Web.config arquivo.Most EF6 applications store the connection string in the applications App/Web.config file. No núcleo do EF, leia esta cadeia de caracteres de conexão usando o ConfigurationManager API.In EF Core, you read this connection string using the ConfigurationManager API. Talvez seja necessário adicionar uma referência para o System.Configuration assembly do framework para poder usar essa 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)
    {
      optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
    }
}

Atualize seu códigoUpdate your code

Neste ponto, é uma questão de abordar os erros de compilação e revisão de código para verificar se as alterações de comportamento afetam você.At this point, it's a matter of addressing compilation errors and reviewing code to see if the behavior changes will impact you.

Migrações existentesExisting migrations

Realmente, não existe uma forma viável para a porta existentes migrações EF6 EF Core.There isn't really a feasible way to port existing EF6 migrations to EF Core.

Se possível, é melhor presumir que todas as migrações anteriores de EF6 foram aplicadas ao banco de dados e iniciar migrando o esquema do que aponte usando 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. Para fazer isso, você usaria o Add-Migration comando para adicionar uma migração, depois que o modelo é movido para o EF Core.To do this, you would use the Add-Migration command to add a migration once the model is ported to EF Core. Em seguida, você poderia remover todo o código do Up e Down métodos de migração scaffolding.You would then remove all code from the Up and Down methods of the scaffolded migration. Migrações subsequentes comparará no modelo quando essa migração inicial foi Scaffold.Subsequent migrations will compare to the model when that initial migration was scaffolded.

A porta de testeTest the port

Só porque seu aplicativo é compilado, não significa-lo com êxito é movido para o EF Core.Just because your application compiles, does not mean it is successfully ported to EF Core. Você precisará testar todas as áreas do seu aplicativo para garantir que nenhuma das alterações de comportamento ter afetado negativamente seu aplicativo.You will need to test all areas of your application to ensure that none of the behavior changes have adversely impacted your application.