Atualização do EF Core 1.0 RC2 para RTMUpgrading from EF Core 1.0 RC2 to RTM

Este artigo fornece diretrizes para mover um aplicativo compilado com os pacotes do RC2 para 1.0.0 RTM.This article provides guidance for moving an application built with the RC2 packages to 1.0.0 RTM.

Versões do pacotePackage Versions

Os nomes dos pacotes de nível superior que você normalmente instalaria em um aplicativo não foram alterada entre RC2 e RTM.The names of the top level packages that you would typically install into an application did not change between RC2 and RTM.

Você precisará atualizar os pacotes instalados para as versões RTM:You need to upgrade the installed packages to the RTM versions:

  • Pacotes de tempo de execução (por exemplo, Microsoft.EntityFrameworkCore.SqlServer) foi alterado de 1.0.0-rc2-final para 1.0.0.Runtime packages (for example, Microsoft.EntityFrameworkCore.SqlServer) changed from 1.0.0-rc2-final to 1.0.0.

  • O Microsoft.EntityFrameworkCore.Tools pacote foi alterado de 1.0.0-preview1-final para 1.0.0-preview2-final.The Microsoft.EntityFrameworkCore.Tools package changed from 1.0.0-preview1-final to 1.0.0-preview2-final. Observe que as ferramentas ainda pré-lançamento.Note that tooling is still pre-release.

Migrações existentes, talvez seja necessário maxLength adicionadoExisting migrations may need maxLength added

No RC2, a definição de coluna em uma migração parecia table.Column<string>(nullable: true) e o comprimento da coluna foi pesquisado em alguns metadados armazenamos no code-behind a migração.In RC2, the column definition in a migration looked like table.Column<string>(nullable: true) and the length of the column was looked up in some metadata we store in the code behind the migration. Na versão RTM, o comprimento agora está incluído no código gerado por scaffolding table.Column<string>(maxLength: 450, nullable: true).In RTM, the length is now included in the scaffolded code table.Column<string>(maxLength: 450, nullable: true).

As migrações existentes que foram geradas por scaffolding antes de usar o RTM não terá o maxLength argumento especificado.Any existing migrations that were scaffolded prior to using RTM will not have the maxLength argument specified. Isso significa que o comprimento máximo aceito pelo banco de dados será usado (nvarchar(max) no SQL Server).This means the maximum length supported by the database will be used (nvarchar(max) on SQL Server). Isso pode ser bom para algumas colunas, mas as colunas que fazem parte de uma chave, chave estrangeira, ou o índice precisa ser atualizado para incluir um comprimento máximo.This may be fine for some columns, but columns that are part of a key, foreign key, or index need to be updated to include a maximum length. Por convenção, 450 é o comprimento máximo usado para chaves, chaves estrangeiras e colunas indexadas.By convention, 450 is the maximum length used for keys, foreign keys, and indexed columns. Se você configurou um comprimento explicitamente no modelo, você deve usar esse comprimento em vez disso.If you have explicitly configured a length in the model, then you should use that length instead.

Identidade do ASP.NETASP.NET Identity

Essa alteração afeta os projetos que usam o ASP.NET Identity e foram criados a partir de um pré-RTM do modelo de projeto.This change impacts projects that use ASP.NET Identity and were created from a pre-RTM project template. O modelo de projeto inclui uma migração usada para criar o banco de dados.The project template includes a migration used to create the database. Essa migração deve ser editada para especificar um comprimento máximo de 256 para as seguintes colunas.This migration must be edited to specify a maximum length of 256 for the following columns.

  • AspNetRolesAspNetRoles

    • NomeName

    • NormalizedNameNormalizedName

  • AspNetUsersAspNetUsers

    • EmailEmail

    • NormalizedEmailNormalizedEmail

    • NormalizedUserNameNormalizedUserName

    • UserNameUserName

Falha ao fazer essa alteração resultará na seguinte exceção quando a migração inicial é aplicada a um banco de dados.Failure to make this change will result in the following exception when the initial migration is applied to a database.

System.Data.SqlClient.SqlException (0x80131904): Column 'NormalizedName' in table 'AspNetRoles' is of a type that is invalid for use as a key column in an index.

.NET core: Remover "imports" no Project. JSON.NET Core: Remove "imports" in project.json

Se você estiver direcionando o .NET Core com o RC2, você precisava adicionar imports a Project. JSON como uma solução temporária para algumas das dependências do EF Core não dar suporte a .NET Standard.If you were targeting .NET Core with RC2, you needed to add imports to project.json as a temporary workaround for some of EF Core's dependencies not supporting .NET Standard. Eles agora podem ser removidos.These can now be removed.

{
  "frameworks": {
    "netcoreapp1.0": {
      "imports": ["dnxcore50", "portable-net451+win8"]
    }
  }
}

Observação

A partir da versão 1.0 RTM, o SDK do .NET Core não oferece suporte a project.json ou desenvolvendo aplicativos .NET Core usando o Visual Studio 2015.As of version 1.0 RTM, the .NET Core SDK no longer supports project.json or developing .NET Core applications using Visual Studio 2015. Recomendamos que você migre do project.json para csproj.We recommend you migrate from project.json to csproj. Se você estiver usando o Visual Studio, é recomendável atualizar para o Visual Studio 2017.If you are using Visual Studio, we recommend you upgrade to Visual Studio 2017.

UWP: Adicionar redirecionamentos de associaçãoUWP: Add binding redirects

A tentativa de executar comandos do EF em resultados de projetos de plataforma Universal do Windows (UWP) no seguinte erro:Attempting to run EF commands on Universal Windows Platform (UWP) projects results in the following error:

System.IO.FileLoadException: Could not load file or assembly 'System.IO.FileSystem.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.

Você precisa adicionar manualmente redirecionamentos de associação para o projeto UWP.You need to manually add binding redirects to the UWP project. Crie um arquivo chamado App.config no projeto de pasta raiz e adicione redirecionamentos para as versões de assembly correto.Create a file named App.config in the project root folder and add redirects to the correct assembly versions.

<configuration>
 <runtime>
   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
       <assemblyIdentity name="System.IO.FileSystem.Primitives"
                         publicKeyToken="b03f5f7f11d50a3a"
                         culture="neutral" />
       <bindingRedirect oldVersion="4.0.0.0"
                        newVersion="4.0.1.0"/>
     </dependentAssembly>
     <dependentAssembly>
       <assemblyIdentity name="System.Threading.Overlapped"
                         publicKeyToken="b03f5f7f11d50a3a"
                         culture="neutral" />
       <bindingRedirect oldVersion="4.0.0.0"
                        newVersion="4.0.1.0"/>
     </dependentAssembly>
   </assemblyBinding>
 </runtime>
</configuration>