提供程序影响的更改

本页包含的链接指向对 EF Core 存储库发出的拉取请求,这些请求可能需要其他数据库提供程序的作者做出反应。 目的是在将现有第三方数据库提供程序更新到新版本时,为其作者提供一个起点。

我们将从 2.1 到 2.2 开始启动此更改日志。 在 2.1 之前,我们针对问题和拉取请求使用了 providers-bewareproviders-fyi 标签。

2.2 ---> 3.x

请注意,许多应用程序级别的中断性变更也会影响提供程序。

2.1 ---> 2.2

仅限测试的更改

测试和产品代码更改

  • https://github.com/dotnet/efcore/pull/12109 - 合并 RelationalTypeMapping.Clone 方法
    • 2.1 中对 RelationalTypeMapping 的更改允许简化派生类。 我们认为这不会中断提供程序,相反,提供程序可以在其派生类型映射类中利用此更改。
  • https://github.com/dotnet/efcore/pull/12069 - 已标记或命名的查询
    • 添加基础结构,用于标记 LINQ 查询并将这些标记显示为 SQL 中的注释。 这可能需要提供程序在 SQL 生成中做出反应。
  • https://github.com/dotnet/efcore/pull/13115 - 通过 NTS 支持空间数据
    • 允许类型映射和成员转换器在提供程序之外注册
      • 提供程序必须在其 ITypeMappingSource 实现中调用 base.FindMapping() 才能使其工作
    • 按照此模式为提供程序添加空间支持,该支持在提供程序之间是一致的。
  • https://github.com/dotnet/efcore/pull/13199 - 添加用于创建服务提供程序的增强型调试
    • 允许 DbContextOptionsExtensions 实现一个新接口,该接口可以帮助用户理解为什么要重新生成内部服务提供程序
  • https://github.com/dotnet/efcore/pull/13289 - 添加 CanConnect API 以供运行状况检查使用
    • 此 PR 添加了 CanConnect 的概念,ASP.NET Core 运行状况检查将使用它来确定数据库是否可用。 默认情况下,关系实现只调用 Exist,但如果需要,提供程序也可以进行其他实现。 非关系提供程序需要实现新的 API 才能使用运行状况检查。
  • https://github.com/dotnet/efcore/pull/13306 - 将基础 RelationalTypeMapping 更新为不设置 DbParameter Size
    • 默认情况下,停止设置 Size,因为它会导致截断。 如果需要设置 Size,提供程序可能需要添加自己的逻辑。
  • https://github.com/dotnet/efcore/pull/13372 - RevEng:始终为十进制列指定列类型
    • 始终在基架代码中为十进制列配置列类型,而不是按约定进行配置。
    • 提供程序不应要求在其所在端进行任何更改。
  • https://github.com/dotnet/efcore/pull/13469 - 添加 CaseExpression 以生成 SQL CASE 表达式
  • https://github.com/dotnet/efcore/pull/13648 - 添加在 SqlFunctionExpression 上指定类型映射的功能,以改进参数和结果的存储类型推理。