为什么MySQL在用于EF

时间:2018-05-11 13:50:37

标签: c# mysql entity-framework exception datareader

我一直在尝试将MySQL与Entity Framework 6结合使用。我有几个项目成功使用SQL Server Express而没有问题。新项目基于之前的项目,我需要一些小的改动来连接和播种EF数据库。我现在遇到的问题是,在SQL Server上运行正常的简单查询在使用MySQL时会引发异常。

涉及两个表/实体。 Device表示收集数据样本的物理设备。 Monitor是要采样的数据类型的定义。因此,为每个设备定义了多个监视器。一旦我尝试检索设备的监视器列表,它就会引发以下错误:

MySql.Data.MySqlClient.MySqlException: There is already an open DataReader associated with this Connection which must be closed first.

以下是代码:

using (var context = new ApplicationDbContext())
{
    foreach (var device in context.Devices)
    {
        var monitors = device.Monitors.Where(m => m.Enabled == true).ToList();

        if (monitors.Count > 0)
        {
            // Get sampled data from device
        }
    }
}

我猜这是关于EF实现的MySQL驱动程序问题。任何人有任何想法如何纠正或解决它?我做的事情真的很愚蠢而且显而易见,我只是没有看到?我在SQL Server实现中一直使用这些相同的模式来访问相关实体。因此,我担心这将成为使用MySQL的一个显示阻止,至少使用内置驱动程序。

一些相关信息:

.NET:4.5.2

EF:6

MySQL:5.7

MySqlClient:6.9.11.0

0 个答案:

没有答案