Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/NET 8.0.9 的变化(2017-09-28,发展里程碑)

MySQL Connector/NET 8.0.9 的变化(2017-09-28,发展里程碑)

添加或更改的功能

  • 为了准确起见,以下 Entity Framework 6 项目已重命名:

    • NuGet 包—— MySql.Data.EntityFramework(原为 MySql.Data.Entity

    • 命名空间—— MySql.Data.EntityFramework(原为 MySql.Data.Entity

    • 大会 - MySql.Data.EntityFramework.dll(是 MySql.Data.Entity.EF6.dll

    (缺陷号 26396260)

  • 文档存储:SessionConfigManager.Update方法已被删除,该SessionConfigManager.Save 方法现在始终使用给定的键覆盖数据。例如:

    SessionConfigManager.Save(
       "mysess",
       "{ \"uri\": \"mysqlx://myuser@localhost/mysess\", \"appdata\": { \"biz\": \"quux\" } }"
    );
    
    SessionConfigManager.Save(
       "mysess",
       "{ \"uri\": \"mysqlx://test@localhost/mysess\", \"appdata\": { \"tar\": \"zzzz\" } }"
    );

    第一条语句设置的mysess.urimysess.appdata值将替换为第二条语句设置的新值。(漏洞 #25829054,漏洞 #25860579)

  • MySQL Connector/NET 现在支持配置为使用 utf8mb4 作为默认字符集的 MySQL 服务器。

  • 以下方法可用于异步命令和连接操作中的 EF Core:

    • Microsoft.EntityFrameworkCore.DbContext.AddAsync

    • Microsoft.EntityFrameworkCore.DbContext.AddRangeAsync

    • Microsoft.EntityFrameworkCore.DbContext.FindAsync

    • Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync

    • Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureDeletedAsync

    • Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureCreatedAsync

    • Microsoft.EntityFrameworkCore.DbContext.ToListAsync

  • 文档存储:以下方法直接执行,而之前每个方法都需要 .execute()作为方法链中的最后一项:

    • BaseSession.DropSchema

    • Collection.DropIndex

    • Schema.DropCollection

    • Schema.DropView

    此外,即使要删除的对象不存在,这些方法现在也会成功。

  • 和连接字符串选项不适用于面向 .NET Core 且现在在使用时返回错误的应用程序 AutoEnlistIncludeSecurityAsserts

  • EF Core:添加了对显式加载的支持。显式加载是 EF Core 1.1.0 中引入的一种对象关系映射器 (O/RM) 模式,它使 .NET 开发人员可以在以后从数据库中显式加载相关数据。

  • 以 .NET Core 为目标的应用程序目前不支持使用以下连接字符串选项,现在使用时会返回错误:

    • SharedMemoryName

    • IntegratedSecurity

    • PipeName

    • Logging

    • UseUsageAdvisor

    • UsePerformanceMonitor

    • InteractiveSession

    • Replication

  • 文档存储:为了提供安全的事务性文档和行更新,添加了以下新方法:

    • FindStatement.LockShared

    • FindStatement.LockExclusive

    • TableSelectStatement.LockShared

    • TableSelectStatement.LockExclusive

    可以使用the或 方法链以任意组合调用LockShared()and LockExclusive()方法任意次数 。如果对方法进行多次调用,则只调用最终方法。有关这两种锁定类型的其他信息,请参阅 共享锁和独占锁Collection.Find()Table.Select()

  • 文档存储:创建新会话时,可以尝试多个主机,直到建立成功连接。主机列表可以在连接字符串中或作为会话创建选项给出,有或没有优先级。

    var mySession = MySQLX.GetSession(
      "mysqlx://dbuser:password@[" +
      "(address=localhost:33060, priority=90)," +
      "(address=192.1.10.10:33060, priority=100)," +
      "(address=[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33060, priority=30)" +
      "]"
    );
    
    var mySession = MySQLX.GetSession(
      "user=dbuser;" +
      "password=dbpassword;" +
      "server=" +
      "(address=192.1.10.10, priority=90)," +
      "(address=server.example.com, priority=100)," +
      "(address=localhost, priority=30);" +
      "port=33060;"
    );
  • 文档存储:IN 运算NOT IN符已更新,以扩展可由 集合的 、和 方法以及表Find()Modify()和 此更新使用以下语法提供对表达式的支持: Remove()Select()Update()Delete()

    compExpr ["NOT"] "IN" compExpr

    以前与INand NOT IN运算符一起使用的语法仍然有效,并且当两者都存在时它优先于新语法。

  • 文档存储:几个新的直接执行方法被添加到 Collection在单个文档级别操作的类中,这与其他 CRUD 方法在所有匹配过滤器的文档上操作不同。新方法是: ReplaceOne()AddOrReplaceOne()GetOne()RemoveOne()

  • 对使用 Unix 域套接字文件的连接的支持已扩展到包括部署在 Linux 主机上的 MySQL 服务器。

    X 协议连接示例:

    "server=/path/to/socket;protocol=unix;user=root;password=mypass;ssl-mode=none"

    经典MySQL协议连接示例:

    "server=/path/to/socket;protocol=unix;user=root;password=mypass"
  • 现在可以使用通过sha256_password 插件进行身份验证的帐户连接到 MySQL 服务器。有关详细信息,请参阅 SHA-256 可插入身份验证

    此外,还添加了一个新的连接选项,以扩展对使用 X 协议与基本或 URI 连接字符串作为匿名类型的连接的身份验证支持。如果服务器支持,auth连接选项启用MYSQL41PLAINEXTERNAL 身份验证机制。有关该auth选项的说明,请参阅 仅适用于 X 协议的选项。

修正错误

  • NuGet 包中的程序集未完全签名。(漏洞 #26739307)

  • EF Core:类中的某些方法 DbContext不支持用于异步操作。(漏洞 #26448321,漏洞 #84814)

  • 文档存储:早期版本的连接器在设计上不支持在客户端故障转移情况下连接到服务器时的优先级分配。基于优先级的故障转移现已可用。(缺陷号 26198794)

  • EF Core:尝试提交FirstOrDefaultAsync 调用该方法的事务时,连接器返回 System.InvalidOperationException: Connection must be valid and open to commit transaction 而不是提交事务。(错误#26026972,错误#86199)

  • 文档存储:将 0 或更低的值传递给Limit方法现在会生成一条更相关的错误消息,指示参数超出范围。(缺陷号 24384660)

  • 文档存储:将 NULL 值作为参数传递给DbDoc.SetValue方法导致异常。此修复可确保此方法接受 NULL。(漏洞 #23542093)