从 EF Core 1.0 RC2 升级到 RTMUpgrading from EF Core 1.0 RC2 to RTM

本文提供了有关将使用 RC2 包生成的应用程序移动到 1.0.0 RTM 的指南。

包版本Package Versions

通常将安装到应用程序中的顶级包的名称在 RC2 和 RTM 之间不会发生更改。

需要将已安装的包升级到 RTM 版本:

  • 运行时包(例如 Microsoft.EntityFrameworkCore.SqlServer)从 1.0.0-rc2-final 更改为 1.0.0

  • Microsoft.EntityFrameworkCore.Tools 包从 1.0.0-preview1-final 改为 1.0.0-preview2-final。 请注意,工具仍处于预发布版本。

现有迁移可能需要添加 maxLengthExisting migrations may need maxLength added

在 RC2 中,迁移中的列定义看起来像 table.Column<string>(nullable: true) 并且列的长度是在迁移后的代码中存储的某些元数据中查找的。 在 RTM 中,此长度现在包含在基架代码 table.Column<string>(maxLength: 450, nullable: true)中。

使用 RTM 之前基架的任何现有迁移都不指定 maxLength 参数。 这意味着将使用数据库支持的最大长度(nvarchar(max) SQL Server)。 这对于某些列可能很好,但作为键、外键或索引一部分的列需要更新以包含最大长度。 按照约定,450是用于键、外键和索引列的最大长度。 如果已在模型中显式配置了长度,则应改为使用该长度。

ASP.NET 标识ASP.NET Identity

此更改会影响使用 ASP.NET Identity 的项目和从 RTM 之前的项目模板创建的项目。 项目模板包含用于创建数据库的迁移。 必须编辑此迁移以指定以下列的最大 256 长度。

  • AspNetRoles
    • 名称
    • NormalizedName
  • AspNetUsers
    • 电子邮件
    • NormalizedEmail
    • NormalizedUserName
    • UserName

如果将初始迁移应用于数据库,则无法进行此更改将导致出现以下异常。

  1. 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 添加到项目 json,作为某些 EF Core 的依赖项(不支持 .NET Standard)的临时解决方法。 现在可将其删除。

  1. {
  2. "frameworks": {
  3. "netcoreapp1.0": {
  4. "imports": ["dnxcore50", "portable-net451+win8"]
  5. }
  6. }
  7. }

备注

从版本 1.0 RTM 版, .NET Core SDK不再支持使用 Visual Studio 2015 project.json 或开发 .net Core 应用程序。 我们建议你从 project.json 迁移到 csproj。 如果使用的是 Visual Studio,建议升级到Visual studio 2017

UWP:添加绑定重定向UWP: Add binding redirects

尝试在通用 Windows 平台(UWP)项目上运行 EF 命令会导致以下错误:

  1. 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 项目。 在项目根文件夹中创建一个名为 App.config 的文件,并将重定向添加到正确的程序集版本。

  1. <configuration>
  2. <runtime>
  3. <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  4. <dependentAssembly>
  5. <assemblyIdentity name="System.IO.FileSystem.Primitives"
  6. publicKeyToken="b03f5f7f11d50a3a"
  7. culture="neutral" />
  8. <bindingRedirect oldVersion="4.0.0.0"
  9. newVersion="4.0.1.0"/>
  10. </dependentAssembly>
  11. <dependentAssembly>
  12. <assemblyIdentity name="System.Threading.Overlapped"
  13. publicKeyToken="b03f5f7f11d50a3a"
  14. culture="neutral" />
  15. <bindingRedirect oldVersion="4.0.0.0"
  16. newVersion="4.0.1.0"/>
  17. </dependentAssembly>
  18. </assemblyBinding>
  19. </runtime>
  20. </configuration>