-
为了准确起见,以下 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.uri
和mysess.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 且现在在使用时返回错误的应用程序
AutoEnlist
。IncludeSecurityAsserts
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()
andLockExclusive()
方法任意次数 。如果对方法进行多次调用,则只调用最终方法。有关这两种锁定类型的其他信息,请参阅 共享锁和独占锁。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
以前与
IN
andNOT 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
连接选项启用MYSQL41
、PLAIN
或EXTERNAL
身份验证机制。有关该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)