Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/NET 8.0.20 的变化(2020-04-27,全面上市)

MySQL Connector/NET 8.0.20 的变化(2020-04-27,全面上市)

添加或更改的功能

  • Connector/NET 现在在所有支持 NET Standard 2.0 的平台上支持 Entity Framework Core 3.1.1。Microsoft Entity Framework Core 3.1.1 与以前版本的 EF Core 不兼容,并且此版本的 Connector/NET 不支持那些以前的版本(2.1、2.0、1.1)(请参阅 Entity Framework Core 支持)。

    此外, MySql.Data.EntityFrameworkCore.DesignNuGet 包已弃用,该包提供的功能现已与该 MySql.Data.EntityFrameworkCore包合并。

  • Connector/NET 现在提供 X 协议负载数据的压缩,可以使用新的 Compression连接选项进行配置。如果 MySQL 服务器实例也支持压缩,则该选项preferred默认设置为模式以压缩负载数据。有关每个选项值的说明,请参阅 仅适用于 X 协议的选项

  • 文档存储: Connector/NET 现在为集合提供 JSON 架构验证,以强制执行文档在被允许插入或更新之前必须遵守的特定结构。模式验证由服务器执行,如果集合中的文档与模式定义不匹配或者服务器不支持验证,则服务器会返回一条错误消息。

    现有Schema.CreateCollection方法现在已重载,可用于将 CreateCollectionOptions具有模式定义的对象传递给 MySQL 服务器。使用新的重载方法时,将原始方法的 ReuseExistingObject参数设置为选项 。CreateCollectionOptions执行级别(offstrictstrict默认情况下)和模式定义使用该validation选项指定,例如:

    var collOptions = CreateCollectionOptions() {
      reuseExistingObject = false,
      validation = Validation() {
        level = ValidationLevel.Strict,
        schema = "{\"id\": \"http://json-schema.org/geo\","
                 + "\"$schema\": \"http://json-schema.org/draft-06/schema#\","
                 + "       \"description\": \"A geographical coordinate\","
                 + "       \"type\": \"object\","
                 + "       \"properties\": {"
                 + "          \"latitude\": {"
                 + "             \"type\": \"number\""
                 + "          },"
                 + "          \"longitude\": {"
                 + "             \"type\": \"number\""
                 + "          }"
                 + "       },"
                 + "       \"required\": [\"latitude\", \"longitude\"]"
                 + "  }"
        }
    };
    
    var coll = schema.CreateCollection("longlang", collOptions);

    此外,一种新方法允许重置现有集合的模式验证。该 Schema.ModifyCollection方法将一个 ModifyCollectionOptions对象传递给服务器。validation集合选项必须包含修改后的值levelschema值(或两者),例如:

    var collOptions = ModifyCollectionOptions() {
      validation = Validation() {
        level = ValidationLevel.Off
          }
    };
    
    var coll = schema.ModifyCollection("longlang", collOptions);

    ReuseExistingObject选项不支持修改,如果使用则返回错误消息。

修正错误

  • 与具有指向同一服务器的不同 IP 地址的多个 DNS 条目的命名服务器的连接生成异常。现在,当找到多个元素时,只返回第一个元素。(错误#30970949,错误#97448)

  • Connector/NET 8.0.19的MySQL.DataNuGet 包包括一个未签名的版本 Ubiety.Dns.Core.dll,它在加载时产生异常。(漏洞 #30798305,漏洞 #98204)

  • 连接器/NET 未实现使用 EF Core 3.0 搭建 MySQL 数据库的脚手架,连接器返回异常以响应其使用。此版本中对 EF Core 3.1.1 的支持增加了脚手架功能。(漏洞 #30677382,漏洞 #98011)

  • get_info方法未包含在 Connector/NET 支持的任何 Entity Framework Core 版本(1.1、2.0 和 2.1)中。Connector/NET 现在支持 EF Core 3.1.1 并实现了该 MySql.Data.EntityFrameworkCore.Infrastructure.MySQLOptionsExtension.Internal.get_info 方法。(错误#30347893,错误#96990)

  • MySqlDbType.JSON类型在准备好的语句中用作参数时会产生代码错误。Connector/NET 现在解释MySqlDbType.JSONMySqlDbType.VarChar. 指定 JSON 列不需要更改代码。(缺陷 #29959124,缺陷 #95984)

  • 空格与 语句IN()列表中的 值混合会SELECT产生错误。(缺陷号 29838254)

  • 尝试 bool?使用 EF Core 数据库上下文读取定义为对应于具有类型属性(可为空布尔值)的 MySQL 表的模型类的记录,返回错误消息。(缺陷 #29833103,缺陷 #93028)

  • MySqlDataReader关闭父对象时,对该对象的 访问受到限制MySqlCommand 。此修复修改 MySqlCommand.Dispose()为不再调用该 ResetReader方法。(缺陷 #27441433,缺陷 #89159)