“当数据读取器关闭时调用'读'不是有效操作。”,但仅限于其中一个包含路径

时间:2011-07-26 20:52:30

标签: mysql linq-to-entities entity-framework-4.1

我在C#中使用带有MySQL后端的实体框架。这是代码的问题部分:

using (var entities = new myEntities()) {
    Parties = new ObservableCollection<t_party>(
        entities.SalesParties
            .Include("SalesReps")
            .Include("InventoryReservation")
            .Include("InventoryReservation.InventoryAssignment")
            .Include("InventoryReservation.InventoryAssignment.Inventory")
            .ToList()
    );
}

当代码运行时,我收到一个错误:“当数据读取器关闭时调用'Read'不是有效的操作。”有趣的是,如果我删除.Include(“SalesReps”)它就可以了。 SalesReps和InventoryReservation都是SalesParty端的0..1多重性和另一端的*。

我正在使用Entity Framework 4.1和“MySQL Connector Net 6.3.7”库。我最初尝试过6.4.x,但在它和实体框架之间遇到了一些其他问题,不得不回滚。

真正令人费解的是,我最近换了笔记本电脑,它在旧款上运行良好!旧版本在32位处理器上运行Windows 7,新版本是64位。不确定这是否会通过使用不同的库来影响事物,但它是我能想到的唯一其他变量。

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,发现一旦执行了使用块,实体变量就会被处理掉。因此,如果您尝试在块之外再次使用它,您将收到此错误。要解决此问题,请创建实体变量,而不使用任何使用块,然后尝试运行代码。