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 (e.g. 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 Server 上)。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 IdASP.NET Identity

この変更に影響を ASP.NET の Id を使用し、以前から作成されたプロジェクトのプロジェクト テンプレートを 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

    • 名前Name

    • 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 に「インポート」を削除します。.NET Core: Remove "imports" in project.json

追加する必要がある RC2 を使用して .NET Core をターゲットとするが場合、 imports EF コアの依存関係をサポートしていない .NET 標準の一部の一時的な回避策として 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"]
    }
  }
}

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>