Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/NET 8.0.17 的变化(2019-07-22,全面上市)

MySQL Connector/NET 8.0.17 的变化(2019-07-22,全面上市)

弃用和移除说明

  • 文档存储:Where()方法已弃用(已Obsolete应用属性),在以下方法构造中调用时将返回警告: Find().Where()Modify().Where()Remove().Where()

添加或更改的功能

  • Connector/NET 支持 SSL PEM 证书版本 1、2 和 3,以便与生成证书的所有应用程序一起使用。(缺陷号 29756058)

  • 添加了对 .NET Core 2.2 的支持,它是 .NET 的跨平台版本,用于构建在 Linux、macOS 和 Windows 上运行的应用程序(请参阅 连接器/NET 版本)。

  • 新的README.mdCONTRIBUTING.md文件现在伴随着 MySQL 连接器/NET 代码以与 Git 兼容。分发包(NuGet、MSI、ZIP)继续包含原始 README文件,但不包含新文件。

  • Connector/NET 现在支持在 MySQL 8.0.17 中utf8mb4_0900_bin 为 Unicode 字符集添加的新排序规则。utf8mb4有关此归类的更多信息,请参阅Unicode 字符集

  • 文档存储: Connector/NET 现在支持 JSON 数组或对象表达式 OVERLAPSNOT OVERLAPS

    expr OVERLAPS expr
    expr NOT OVERLAPS expr

    假设一个集合有这些内容:

    [{
       "_id": "1",
       "list": [1, 4]
     }, {
       "_id": "2",
       "list": [4, 7]
    }]

    这个操作:

    var res = collection.Find("[1, 2, 3] OVERLAPS $.list").Fields("_id").Execute();
    res.FetchAll();

    应该返回:

    [{ "_id": "1" }]

    这个操作:

    var res = collection.Find("$.list OVERLAPS [4]").Fields("_id").Execute();
    res.FetchAll();

    应该返回:

    [{ "_id": "1" }, { "_id": "2" }]

    如果应用程序使用任一运算符而服务器不支持它,则会发生错误。

  • 文档存储:对于传递给Collection.CreateIndex() 方法的索引规范,Connector/NET 现在支持索引数组字段。例如,考虑一个包含此数组的集合:

    Session session = MySQLX.GetSession(connString);
    Schema schema = session.GetSchema(schemaName);
    Collection coll = schema.CreateCollection(collectionName);
    
    var docs = new[]
    {
      new {  _id = 1, name = "John Smith", emails = [ "john.smith@mycompany.com", "jsmith@php.net", "jsmith@mail.com" ] }
    };
    
    coll.Add(docs).Execute();

    单个索引字段描述可以包含一个带有值的新成员 array名称Boolean 。如果设置为true,则假定该字段包含给定类型的元素数组。此外,可能的索引字段数据类型集(用作type索引字段描述中成员的值)用 type 扩展 ,其中长度是强制性的。例如,要使用数组字段创建 emails_idx 索引: CHAR(N)N

    coll.CreateIndex("emails_idx",
        "{\"fields\": [{\"field\": $.emails,
                   	   \"type\":\"CHAR(128)\",
                   	   \"array\": true }]}"
    );

    要查找数组的元素:

    collection
       .Find(":mail IN $.emails")
       .Bind("mail", "jsmith@php.net")
       .Execute();
  • 对 SSH 隧道的新支持使 Connector/NET 能够使用基于 SSH 的 TCP/IP 创建到远程 MySQL 服务器的安全连接。通过 SSH 服务器授权,应用程序可以在 MySQL 服务器端口被阻止时从防火墙后面建立连接。经典 MySQL 协议和 X 协议连接都支持 SSH 隧道的新连接字符串选项(和等效类属性)。

修正错误

  • 每当尝试使用任何 SSL 模式类型(除了 None. 现在仅当 SSL 模式类型为VerifyCAVerifyFull或使用 PEM 证书时才加载程序集。(漏洞#29611216)

  • 文档存储:当与表一起使用时,该 MySqlConnection.GetSchema()方法有时会以意外的顺序返回列 INFORMATION_SCHEMA.COLUMNS。此修复可确保返回的列现在仅对应于序数位置。(缺陷号 29536344)

  • InvariantCulture某些数据类型缺少 该属性,这在平台迁移操作期间造成了问题。感谢 Effy Teva 提供补丁。(缺陷 #29262195,缺陷 #94045)

  • SHOW VARIABLES不必要地 执行了连接器/NET 连接。(缺陷 #28928543,缺陷 #93202)

  • 在托管服务器的计算机启动后,连接器/NET 对 MySQL 的访问停止工作,并在定义的时间段内继续不间断地运行。(错误#26930306,错误#75604)