Uaktualnianie z programu EF Core 1.0 RC2 do RTMUpgrading from EF Core 1.0 RC2 to RTM

Ten artykuł zawiera wskazówki dotyczące przenoszenia aplikacji skompilowanej za pomocą pakietów 1.0.0 RC2 RTM.This article provides guidance for moving an application built with the RC2 packages to 1.0.0 RTM.

Wersje pakietówPackage Versions

Nazwy pakietów najwyższego poziomu, które zazwyczaj można zainstalować na aplikację nie zmienił się od wersji RC2 i RTM.The names of the top level packages that you would typically install into an application did not change between RC2 and RTM.

Należy uaktualnić zainstalowane pakiety do wersji RTM:You need to upgrade the installed packages to the RTM versions:

  • Pakiety środowiska uruchomieniowego (na przykład Microsoft.EntityFrameworkCore.SqlServer) zmieniła się z 1.0.0-rc2-final do 1.0.0.Runtime packages (for example, Microsoft.EntityFrameworkCore.SqlServer) changed from 1.0.0-rc2-final to 1.0.0.

  • Microsoft.EntityFrameworkCore.Tools Pakietu zmieniła się z 1.0.0-preview1-final do 1.0.0-preview2-final.The Microsoft.EntityFrameworkCore.Tools package changed from 1.0.0-preview1-final to 1.0.0-preview2-final. Należy pamiętać, że narzędzia jest nadal w wersji wstępnej.Note that tooling is still pre-release.

Migracja istniejących może być konieczne maxLength dodaneExisting migrations may need maxLength added

W wersji RC2, definicji kolumny, w przypadku migracji wyglądał jak table.Column<string>(nullable: true) i długość kolumny został wyszukiwane w niektóre metadane są przechowywane w kodzie migracji.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. W wersji RTM, długość jest teraz zawarta w utworzony szkielet kodu 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).

Istniejące migracji, które zostały szkieletu przed użyciem RTM nie będzie miał maxLength określony argument.Any existing migrations that were scaffolded prior to using RTM will not have the maxLength argument specified. Oznacza to, maksymalna długość obsługiwane przez bazę danych, który będzie używany (nvarchar(max) w programie SQL Server).This means the maximum length supported by the database will be used (nvarchar(max) on SQL Server). Może to być dobrym rozwiązaniem dla niektórych kolumn, ale także kolumny, które są częścią klucza, klucz obcy lub indeksu, należy zaktualizować maksymalną długość.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. Zgodnie z Konwencją 450 jest maksymalna długość używane do kluczy, kluczy obcych i indeksowanych kolumn.By convention, 450 is the maximum length used for keys, foreign keys, and indexed columns. Jeśli długość skonfigurowano jawnie w modelu, następnie należy użyć tej długości zamiast tego.If you have explicitly configured a length in the model, then you should use that length instead.

ASP.NET IdentityASP.NET Identity

Ta zmiana ma wpływ na projekty użycia produktu ASP.NET Identity, które zostały utworzone na podstawie pre-RTM szablonu projektu.This change impacts projects that use ASP.NET Identity and were created from a pre-RTM project template. Szablon projektu obejmuje migrację użyty do utworzenia bazy danych.The project template includes a migration used to create the database. Ta migracja musi być edytowany, aby określić maksymalną długość 256 dla następujących kolumn.This migration must be edited to specify a maximum length of 256 for the following columns.

  • AspNetRolesAspNetRoles

    • NazwaName

    • NormalizedNameNormalizedName

  • AspNetUsersAspNetUsers

    • Adres e-mailEmail

    • NormalizedEmailNormalizedEmail

    • NormalizedUserNameNormalizedUserName

    • UserNameUserName

Nie można dokonać tej zmiany spowoduje następujący wyjątek podczas początkowej migracji jest stosowana do bazy danych.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: Usuń "import" w pliku project.json.NET Core: Remove "imports" in project.json

Jeśli zostały przeznaczone dla platformy .NET Core za pomocą RC2, trzeba było dodać imports do pliku project.json jako rozwiązanie tymczasowe dla niektórych zależności programu EF Core nie obsługuje .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. Te można teraz usunąć.These can now be removed.

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

Uwaga

Począwszy od wersji 1.0 RTM, zestawu .NET Core SDK nie obsługuje już project.json lub tworzenia aplikacji platformy .NET Core przy użyciu programu 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. Firma Microsoft zaleca migracji z plików project.json do csproj.We recommend you migrate from project.json to csproj. Jeśli używasz programu Visual Studio, zaleca się uaktualnienie do programu Visual Studio 2017.If you are using Visual Studio, we recommend you upgrade to Visual Studio 2017.

Platformy uniwersalnej systemu Windows: Dodać przekierowania powiązańUWP: Add binding redirects

Przy próbie uruchomienia programu EF poleceń na wynikach projektów platformy uniwersalnej Windows (UWP) w następujący błąd: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.

Należy ręcznie dodać przekierowania powiązań do projektu platformy uniwersalnej systemu Windows.You need to manually add binding redirects to the UWP project. Utwórz plik o nazwie App.config w projekcie folder główny i dodać przekierowania do wersji poprawny zestaw.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>