zoukankan      html  css  js  c++  java
  • MySQL Connector Net 6.6.5 Entity Framework 显式预加载 Eager Load Bug

    在将原有系统从MSSQL迁移到MySQL时,遇到莫名其妙的问题,经过排除大法反复试验,锁定问题出自MySQL官方出品的Entity组件。又经过网上搜索,发现类似问题存在由来已久 http://bugs.mysql.com/bug.php?id=46142,至今也没彻底解决。

    bug报告地址:http://bugs.mysql.com/bug.php?id=68886

    环境:Entity Framework 4.3.1,数据库 MySQL 5.6.10, .NET 4.0

    定义下面的类:

        public class Employee
        {
            public Employee()
            {
                Contracts = new List<Contract>();
                LongLeaves = new List<LongLeave>();
                EmployeeSettlementSettings = new List<EmployeeSettlementSetting>();
            }
    
            [Key]
            public string BadgeNo { get; set; }
            public string Name { get; set; }
            public List<Contract> Contracts { get; set; }
            public List<LongLeave> LongLeaves { get; set; }
            public List<EmployeeSettlementSetting> EmployeeSettlementSettings { get; set; }
        }

    如果同时显式加载(Eager Load)Contracts,LongLeaves和EmployeeSettlementSettings:

    db.Employees.AsNoTracking()
    .Include(i => i.Contracts)
    .Include(i => i.LongLeaves)
    .Include(i => i.EmployeeSettlementSettings)
    .ToList();

    报下面的错误:

    "String was not recognized as a valid Boolean."

    如果仅仅预加载其中任意2项,则一切正常。

    我又试验了 MySQL Connector Net 6.7 Alpha版本,也存在相同的问题。

    目前的解决办法,一是改变获取数据的方式(当然这只是权宜之计);二是改用商业组件:DevArt的dotConnect Professional,据说性能不错,而且没有这个bug,详见这里:http://stackoverflow.com/questions/7712620/entity-framework-many-to-many-and-eager-loading

  • 相关阅读:
    从键盘输入10个数,计算出正数和负数的个数。
    浏览器允许的并发请求资源数 优化
    strict 严格模式
    AMD 和 CMD 的区别
    Canvas
    visual filters 滤镜 ie
    ie 如何判断正在执行的脚本
    async
    富文本编辑器
    检测CSS属性 是否支持
  • 原文地址:https://www.cnblogs.com/jlzhou/p/3011762.html
Copyright © 2011-2022 走看看