MySQL 连接器/NET 发行说明  / MySQL Connector/Net 6.6 中的变化  /  MySQL 连接器/NET 6.6.7 (2014-11-11) 的变化

MySQL 连接器/NET 6.6.7 (2014-11-11) 的变化

这是 6.6.x 分支的最终版本。

修正错误

  • 虽然MySqlDateTime.Millisecond已经允许 0 到 999(3 位精度)之间的值, MySqlDateTime.Microsecond但添加了一个新属性来处理 DateTime值的微秒(6 位精度)。(缺陷号 20019257)

  • 流畅的 API DbModelBuilder.HasColumnType 在 Entity Framework 6 中没有效果。(Bug #19476922、Bug #19456229、Bug #19462808)

  • 在 Entity Framework 6 的“Code First”中设置主键 GUID 身份在 MySQL 服务器 5.7 中不起作用。插入具有有效 GUID 值的行会产生错误,即使它已将触发器设置为正确的值。

    作为解决方法,必须重新声明列定义以接受虚拟默认值,例如“默认值”。(错误#19456452、错误#19462811、错误#19476995)

  • 声明为“Identity GUID”的非主键没有自动生成它们的 GUID。(错误#19456415、错误#19461919、错误#19477029)

  • 使用 MySQL 5.7 创建“模型优先”或“数据库优先”模型会将 ProviderManifestToken 设置为 5.6。(错误#19453814,错误#19475012)

  • 使用 Entity Framework 4.3 Code first Identifiers for Migrations 和 Entity Framework 6 时,生成的 外键标识符可能超过 64 个字符,从而导致 MySQLException错误。该修复使用名称格式重命名任何太长的标识符 ,其中 是在运行时生成的全局唯一标识符。(错误#19211564,错误#19483128)FK_guidguid

    参考:这个问题是 Bug #67285 的回归。

  • 尝试更改包含对会话变量的引用的存储过程或触发器时,发生错误并且更改未保存,除非在连接设置中设置了“Allow User Variables = true”。不再生成错误,并且使用 Alter Routine 重命名存储过程或触发器的类似问题也已修复。(漏洞#19211432)

  • 在 Visual Studio 中,Connector/NET 不读取类型为TIME(3)的字段的时间值的毫秒部分。(漏洞 #19211409,漏洞 #18111085)

  • MySQL 解析器无法识别 MySQL 服务器支持的完整字符串文字语法。此修复使 Connector/NET 和 MySQL for Visual Studio 能够识别字符串文字语法,如MySQL 服务器手册中的Character String Literal Character Set and Collat​​ion中指定的那样。(错误#19211249,错误#18169145)[_charset_name]'string' [COLLATE collation_name]

  • 当超过连接限制时, MySqlConnection.Open()将使 TCP 连接保持CLOSE_WAIT状态,但现在关闭它们。(漏洞 #18665388,漏洞 #72025)

  • 当客户端刷新与过期会话关联的网页时,如果 ASP.NET 项目正在使用 <SessionState ... regenerateExpiredSessionId="true" ...>,则会从 MySqlSessionProvider. (错误#18657550、错误#19783515、错误#70409)

  • 实体框架将 NullReferenceException记录插入到具有自动递增、无符号、bigint 主键的表中。(错误#18189217、错误#19211404、错误#71242)

  • 在 Visual Studio 中,存储过程调试器未last_insert_id()正确计算监视表达式中的函数。此修复程序还纠正了查询调试数据表​​的其他两个信息函数的类似问题: row_count()found_row()。(漏洞#18111085)

  • Union()当 Connector/NET 的 SQL 生成器为 LINQ或运算符 发出代码时 Concat() ,括号不会应用于各个 SELECT语句。Take() 当运算符(因此是LIMITSQL 代码中的一个子句)应用于最后一个语句时,这可能会导致查询的含义发生变化SELECT 。有了这个修复,括号被放在单独的 SELECT 语句周围,这样LIMIT子句就不会应用于整个 UNION操作结果。(错误#18049691、错误#19211182、错误#19483110、错误#70828)

  • 当参数的括号前有任何空格时,MySQL 解析器无法解析if 语句(例如,if (1,1, 1))。此外 ,许多其他函数(如、 、、 等)if也出现了同样的问题,此修复解决了所有这些问题。(错误#17981407,错误#19211240)row_countifnullmodrepeat

  • KeepaliveConnector/NET 将连接字符串中选项 的值解释为以毫秒为单位。此修复使其被解释为秒数,如文档中指定的那样。(错误#17981275、错误#19211293、错误#69484)

  • my_aspnet_Sessions启用 MySQL 会话状态的 Web 应用程序因引用错误的表名(而不是正确的名称my_aspnet_sessions)而 引发异常 。这是由于对 SQL 查询的大小写处理不正确 MySqlSessionStateStore。(错误#17960855、错误#19211384、错误#69652)

  • RenameColumn实体框架迁移中 的操作在应用时引发‘字段列表’中的未知列‘否’错误 Update-Database。(漏洞 #17959787,漏洞 #71102)

  • 在 Visual Studio 中,Intellisense 没有将关键字 describedesc ”视为explain的同义词 。(错误#17956087,错误#19211401)

  • 在 Visual Studio 中,Intellisense 显示来自所有数据库的视图,而不仅仅是当前数据库。(错误#17954412,错误#19211338)

  • 在 Entity Framework 中创建模型时, Connector/NET 没有将AUTO_INCREMENT 属性添加到 type 的主键列 。BIGINT(错误#17924407、错误#17937401、错误#70602)

  • MySqlDataReadeer.GetTimeSpan()TIME(3)-typed 字段 读取的值的小数部分 被丢弃。(错误#17923814,错误#70377)

  • 打开或创建.mysql文件时,尝试调用 Intellisense 在某些情况下会导致错误。(漏洞#17890216)

  • 有时在 MySQL 文件上调用 IntelliSense 代码完成 ( Control + J ) 会发出错误。(漏洞#17890216)

  • Connector/NETNullReferenceException在尝试将实体保存到具有 tinyintbigint 自动递增主键的表中时抛出错误。(错误#17866076,错误#70888)

  • 当一个表达式中有两个函数时,调试器无法正确调试例程。这是由于处理第二个函数的范围时出现错误,该错误已得到修复。(漏洞 #17865915)

  • Leave 在 Visual Studio 中,调试器在使用语句 调试存储过程时因解析器错误而失败。(漏洞#17616344)

  • 使用调试器在 Visual Studio 中调试存储的例程时,长标识符导致抛出错误“列 'pvarname' 的数据太长”。这是因为调试器的 SQL 脚本不支持与 MySQL 服务器相同长度的标识符名称。此修复使调试器与 MySQL 服务器在标识符名称支持的最大长度上匹配。(错误#17568158,错误#70159)

  • 在 Entity Framework 5 中使用 Code First 方法时,检查可空列是否为空的 LINQ 查询会导致生成错误的 SQL 查询。(漏洞 #17285548,漏洞 #69922)