EF Core 1.0 RC2 から RTM にアップグレードします。Upgrading from EF Core 1.0 RC2 to RTM

この記事では、1.0.0 に RC2 パッケージで構築されたアプリケーションの移動のガイダンスを提供します。 RTM。This article provides guidance for moving an application built with the RC2 packages to 1.0.0 RTM.

パッケージのバージョンPackage Versions

アプリケーションに通常インストールされる最上位レベルのパッケージの名前 RC2 から RTM の間で変更していません。The names of the top level packages that you would typically install into an application did not change between RC2 and RTM.

RTM バージョンにインストールされているパッケージをアップグレードする必要があります。You need to upgrade the installed packages to the RTM versions:

  • ランタイム パッケージ (たとえば、 Microsoft.EntityFrameworkCore.SqlServer) から変更1.0.0-rc2-final1.0.0します。Runtime packages (for example, Microsoft.EntityFrameworkCore.SqlServer) changed from 1.0.0-rc2-final to 1.0.0.

  • Microsoft.EntityFrameworkCore.Toolsからパッケージが変更された1.0.0-preview1-final1.0.0-preview2-finalします。The Microsoft.EntityFrameworkCore.Tools package changed from 1.0.0-preview1-final to 1.0.0-preview2-final. ツールはまだプレリリース版であることに注意してください。Note that tooling is still pre-release.

既存の移行が maxLength の追加を必要があります。Existing migrations may need maxLength added

移行では、列定義のように RC2 では、table.Column<string>(nullable: true)され、列の長さが、移行の分離コードで格納するいくつかのメタデータで検索します。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. 長さに今すぐスキャフォールディングされたコードに含まれている RTM では、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).

RTM を使用する前にスキャフォールディングされた、既存の移行はありません、maxLength引数が指定されました。Any existing migrations that were scaffolded prior to using RTM will not have the maxLength argument specified. つまり、データベースでサポートされている最大の長さが使用されます (nvarchar(max) SQL サーバー上)。This means the maximum length supported by the database will be used (nvarchar(max) on SQL Server). これは問題ありませんが、一部の列、列、キー、外部のキーの一部である可能性があります。 またはインデックスは、最大長を含むように更新する必要があります。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. 通常、450 は最大長は、キー、外部キーは、使用され、インデックス列を作成します。By convention, 450 is the maximum length used for keys, foreign keys, and indexed columns. モデルで明示的に長さを構成した場合がその長さ代わりに使用します。If you have explicitly configured a length in the model, then you should use that length instead.

ASP.NET IdentityASP.NET Identity

この変更の影響を ASP.NET Identity を使用し、前から作成されたプロジェクトのプロジェクト テンプレートを RTM。This change impacts projects that use ASP.NET Identity and were created from a pre-RTM project template. プロジェクト テンプレートには、データベースの作成に使用される移行が含まれています。The project template includes a migration used to create the database. この移行を編集の最大長を指定する必要があります256次の列にします。This migration must be edited to specify a maximum length of 256 for the following columns.

  • AspNetRolesAspNetRoles

    • nameName

    • NormalizedNameNormalizedName

  • AspNetUsersAspNetUsers

    • 電子メールEmail

    • NormalizedEmailNormalizedEmail

    • NormalizedUserNameNormalizedUserName

    • UserNameUserName

最初の移行がデータベースに適用されるときに、この変更を行う失敗は次の例外が発生されます。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: project.json で"imports"を削除します。.NET Core: Remove "imports" in project.json

追加する必要 RC2 を使用して .NET Core を対象とした場合importsを一部の .NET Standard をサポートしない EF Core の依存関係の一時的な回避策として、project.json にします。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. これらは削除ようになりましたことができます。These can now be removed.

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

注意

バージョン 1.0 の時点で RTM、 .NET Core SDKはサポートしなくなりましたproject.jsonまたは Visual Studio 2015 を使用して .NET Core アプリケーションを開発します。As of version 1.0 RTM, the .NET Core SDK no longer supports project.json or developing .NET Core applications using Visual Studio 2015. project.json から csproj への移行をお勧めします。We recommend you migrate from project.json to csproj. Visual Studio を使用している場合にアップグレードする勧めVisual Studio 2017します。If you are using Visual Studio, we recommend you upgrade to Visual Studio 2017.

UWP: バインド リダイレクトを追加します。UWP: Add binding redirects

ユニバーサル Windows プラットフォーム (UWP) プロジェクトの結果、次のエラーで EF コマンドを実行しようとしています。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.

UWP プロジェクトにバインド リダイレクトを手動で追加する必要があります。You need to manually add binding redirects to the UWP project. という名前のファイルを作成するApp.configプロジェクトのルート フォルダーと、適切なアセンブリのバージョンにリダイレクトを追加します。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>