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 criado com os pacotes RC2 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 normalmente você instala em um aplicativo não foram alterado 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ê precisa 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) alterado de 1.0.0-rc2-final para 1.0.0.Runtime packages (e.g. Microsoft.EntityFrameworkCore.SqlServer) changed from 1.0.0-rc2-final to 1.0.0.

  • O Microsoft.EntityFrameworkCore.Tools pacote 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 ferramentas ainda pré-lançamento.Note that tooling is still pre-release.

Migrações existentes podem ser 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 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).

Quaisquer migrações existentes que foram Scaffold antes de usar 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, a 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 projetos que usam o ASP.NET Identity e foram criados a partir de 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

    • Nome de usuárioUserName

Falha ao fazer esta 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.NET Core: Remove "imports" in project.json

Se foram direcionando o .NET Core com RC2, você precisava adicionar imports para Project como uma solução temporária para algumas das dependências do núcleo do EF não dá suporte à .NET padrão.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"]
    }
  }
}

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

Ao tentar executar os comandos EF nos resultados de projetos do Windows UWP (plataforma Universal) 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 os redirecionamentos de associação ao projeto UWP.You need to manually add binding redirects to the UWP project. Crie um arquivo chamado App.config no projeto pasta raiz e adicionar 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>