MySQL 连接器/NET 发行说明  / MySQL Connector/Net 6.5 中的变化  /  MySQL Connector/NET 6.5.5 的变化(2012-12-03,全面上市)

MySQL Connector/NET 6.5.5 的变化(2012-12-03,全面上市)

修复了自 6.5.4 版本以来的问题。

添加或更改的功能

  • 使用 MySQLClientPermissions该类的中等信任支持现在更加灵活:除了将库安装在全局程序集缓存 (GAC) 中的原始部署方法之外,您还可以将库安装在项目或解决方案内的一个bin或 文件夹中。lib当库部署在 GAC 以外的地方时,唯一支持的协议是 TCP/IP。使用安装在 GAC 中的库的现有应用程序现在必须包含一个额外的连接选项, includesecurityasserts=true. 有关详细信息,请参阅 使用部分信任/中等信任。(漏洞 #14668820,漏洞 #65036)

修正错误

  • 性能: 用于 MySQL 的 LINQ to SQL 数据提供程序正在为该Contains()方法生成低效代码,生成包含多个OR子句而不是更高效IN子句的查询。(漏洞 #14016344,漏洞 #64934)

  • 性能: MySQL 的 LINQ to SQL 数据提供程序为StartsWith()Contains()方法生成低效代码,调用 MySQL LOCATE()函数而不是使用 LIKE% 通配符的运算符。该修复导致两种方法都使用 LIKE语法,但只 StartsWith()获得了实质性的性能改进。涉及该 StartsWith()方法的查询现在可以利用相应列上的索引。(缺陷 #14009363,缺陷 #64935)

  • 调用方法FirstOrDefault LINQ to Entities查询导致 System.Data.EntityCommandCompilationException 异常。(错误#15856964,错误#67377)

  • 在 Visual Studio 2012 中使用 Entity Frameworks: Code First 并使用 GUID 作为类中的主键时,可能会出现以下错误:

    Incorrect column specifier for column 'column_name'.

    Connector/NET 将AUTO_INCREMENT 属性应用于列,这要求列使用整数数据类型。(缺陷 #15834176,缺陷 #67450)

  • 在 Connector/NET 中使用 IPV6 地址的连接尝试将失败。(缺陷 #14835718,缺陷 #67253)

  • Visual Studio 2012 项目有时会出现以下错误对话框:

    Failed to merge object(s).
    
    Keyword not supported.
    Parameter name: AttachDbFilename.

    此问题主要影响 VisualStudio 2012 项目,从 VisualStudio 2010 迁移或包括使用 VS2010 创建的网站,连接到 MySQL 5.5 服务器。(漏洞 #14733472,漏洞 #66880)

  • 当应用程序启动、创建连接,然后在执行一次数据库操作后进入空闲状态时,现在可以更快地清理连接:通常是在 3 分钟而不是 6 分钟的空闲时间之后。这种优化对于低流量站点上的 ASP.net 应用程序特别有用。(缺陷 #14652624,缺陷 #66472)

  • 在某些情况下, CacheServerProperties=true连接字符串中的设置可能会导致Packet too large错误。启用连接池 CacheServerProperties=true后,第一个连接按预期工作,但如果查询超过 1024 字节,第二个、第三个等等连接失败。(缺陷 #14593547,缺陷 #66578)

  • Connector/NET 不支持创建具有字符串类型键的实体。在创建数据库的过程 MySqlException中,抛出 一个BLOB/TEXT column 'Name' used in key specification without a key length. 提供者生成的 DDL 指定了MEDIUMTEXT主键的列,但没有指定键的长度。在使用 Entity Framework 版本 4.3 及更高版本时,此修复尤为重要,因为 __MigrationsHitory表(替换 EdmMetadata表)使用字符串属性作为其键。(错误#14540202、错误#65289、错误#64288)

  • 尝试执行以下语句时, 可能ExecuteNonQuery()会返回错误 :Parameter '?' must be defined

    insert into table_name (Field1, Field1) VALUES(?,?)

    也就是说,当用两个不同的?占位符引用同一个字段两次时。(缺陷 #14499549,缺陷 #66060)

  • 当使用 MySQL 数据库设置为UTF32 ASP.net 成员数据库时,Web 应用程序可能会出现 密钥太长错误,并且网站管理工具无法连接到提供商。原因是 my_aspnet_sessions.SessionId当从Latin1字符集 转换为每个字符 4 个字节时,列超过了主键UTF32的长度限制:

    Specified key was too long; max key length is 767 bytes

    (缺陷 #14495292,缺陷 #65144)

  • NullReferenceException尝试插入带有空VALUES子句的新记录时 ,MySQL Connector/NET EntityFramework 提供程序会抛出异常 。INSERT当表中唯一需要的 ( NOT NULL) 列是主键自动递增列时,这样的方法应该有效。(缺陷 #14479715,缺陷 #66066)

  • 使用 Entity Data Model Designerdecimal 类型和CreateDatabase函数,值在小数点右侧存储为 0 位。通过此修复,默认值为小数点右侧的 2 位数字,并且可以正确应用通过实体数据模型设计器指定的任何精度。(错误#14474342,错误#65127)

  • 通过在 Code First 项目的方法中调用方法来自定义精度 HasPrecision()OnModelCreating()始终生成精度设置 (10,2) 而不是指定的精度。(缺陷 #14469048,缺陷 #65001)

  • 通过 MySql.Data.MySqlClient.MySqlCommand()类构建命令时,内存可能会泄漏,因为某些 IO.MemoryStream实例没有被有效释放。内存泄漏可能是 SQL 密集型应用程序中的一个问题,例如处理大量INSERT 语句的日志记录应用程序。(错误#14468204,错误#65696)

  • 将 ASP.net 网络安全功能与 MySQL 数据库一起使用时,使用访问 my_aspnet_usersinroles表的功能会导致异常:

    MySql.Data.MySqlClient.MySqlException: Table 'testdb.my_aspnet_usersinrole' doesn't exist.

    例如,尝试从角色中删除用户或在角色中查找用户时可能会发生此错误。该修复程序将表名的拼写更正为 my_aspnet_usersinroles. (缺陷 #14405338,缺陷 #65805)

  • 虽然成员变量 MySqlCommand.LastInsertedId是 64 位的 long,但它的值实际上被限制在最大值Int32(2,147,483,647)。如果主键超过此值,则 的值 LastInsertedId是错误的。对于具有大量行的表,这种不匹配可能是个问题。(漏洞 #14171960,漏洞 #65452)

  • 将 Entity Framework 与 Connector/NET 一起使用时,在 的函数中 OnDelete未考虑关联属性,从而导致出现错误消息 。函数生成的 SQL 缺少and 子句。这些子句由 DDL 生成向导正确填写。(缺陷 #14008752,缺陷 #64779)CreateDatabaseScriptObjectContextSystem.Data.UpdateException was unhandledCreateDatabaseScriptON DELETEON UPDATE

  • 使用 Code First 实体框架调用应用程序中的存储过程或函数可能会导致错误:

    Unhandled Exception: MySql.Data.MySqlClient.MySqlException: You have an error
    in your SQL syntax; ...

    代码更改允许使用如下语法调用存储过程,而无需使用 CALL语句,也无需使用 CommandType.StoredProcedure.

    int count = myContext.Database.SqlQuery<int>("GetCount").First();

    (缺陷 #14008699,缺陷 #64999)

  • 在表设计器中编辑列的长度时VARCHAR,数据类型可能会错误地保存为BIT. (漏洞 #13916560)

  • 后面跟有or 的任何方法调用 序列 都会导致 错误。(错误#13913047,错误#64749)Take(n)CountLongCountSystem.Data.EntityCommandCompilationException

  • 使用 Entity Framework Code First 方法时,生成的代码可能不正确:

    • 缺少数据类型的长度说明符,例如 VARBINARY代替 . VARBINARY(n)

    • ALTER TABLE当在主类中指定私有成员时,引用不存在的表的语句。

    (漏洞 #13900091,漏洞 #64216)

  • 数据类型的日期/时间值的毫秒部分未正确存储DATETIME(3)。(错误#13881444,错误#64686)

  • 使用 时MySqlProfileProvider,调用该函数ProfileManager.DeleteProfiles 可能会引发InvalidCastException 异常。(缺陷 #13790123,缺陷 #64470)

  • 如果在会话已锁定为只读状态的特定时刻调用、 和 函数 的计时问题,GetItemExclusive可能 会导致应用程序冻结近 2 分钟。(缺陷 #13733054,缺陷 #63997)SetAndReleaseItemExclusiveGetItemGetItem

  • 在 Visual Studio 表设计器中,新索引的名称始终派生自表名且无法更改。(漏洞 #13613801)

  • 使用 Entity Framework Code First 方法时,生成的代码可能会 MEDIUMTEXT在其他类型VARCHAR 更合适的上下文中使用数据类型,从而导致错误,例如:

    error 0064: Facet 'MaxLength' must not be specified for type 'mediumtext'.

    (漏洞 #13582335,漏洞 #63920)

  • LINQ to Entity查询中,包括一个子实体 (1-n) 及其实体 (nn) 返回了错误的结果。例如:

    db.Authors.Include("Books.Editions").AsEnumerable().First();

    (缺陷 #13491698,缺陷 #62801)

  • 在 Visual Studio 2005 中,通过服务器资源管理器添加新的数据连接会产生一条错误消息:Package Load Failure。Visual Studio 插件动态链接到 VS2008 版本的程序集 Microsoft.VisualStudio.Data(v9.0)。固定插件与该库的 VS2005 版本 (v8.0) 链接,向上兼容更高版本的 Visual Studio。(缺陷 #13491674,缺陷 #63073)

  • 以前,过期会话的清理操作是完全自动的,无法捕获超时事件并进行特定于应用程序的清理。此修复程序添加了一个 enableSessionExpireCallback连接选项,让开发人员可以在会话过期时捕获事件。enableSessionExpireCallback启用时, 会 在从表global.asax.session_end中删除数据之前引发事件 。my_aspnet_sessions禁用时 enableSessionExpireCallback,数据会从表中删除,my_aspnet_sessions 而不会先引发事件。会话过期的超时期限在 web.config文件中指定,在 timeout该部分的选项中 sessionState。(缺陷 #13354935,缺陷 #62266)