繁体   English   中英

实体框架6和MySql双循环选择和数据读取器中的错误

[英]Entity Framework 6 and MySql error in double looping select and datareader

我正在观看一个视频课程,以学习有关EF 6 + MySql的知识,到目前为止,这很容易,但是现在我遇到了一个简单的代码问题,我花了8h的时间,但是还没有解决方案。 错误出现在“ cli.contatos”中的第二个Foreach上:

        var db = new apagartesteentityEntities(); // create model

        // runs the read on "clientes" table
        foreach (var cli in db.clientes) 
        {
            Console.WriteLine(cli.NomeClientes);

            // runs a read in "contatos" table looking for relations
            foreach (var cont in cli.contatos)                 {// <--error 
                Console.WriteLine(cont.TipoContato);
                Console.WriteLine(cont.ValorContato);
            }

        }
        Console.Read();

因此,这里的代码与视频课程完全相同,但是“老师”使用SqlServer,而我使用MySql。 “例外”表示已经打开了一个DataReader,必须将其关闭,但这对我没有帮助。

-我已经更新了MySql连接器和MySql Visual Studio-已经覆盖了dll-已经开始从nuget更新EntityFramework,MySql.Data,MySql.Entity的项目,然后再创建模型。

我现在开始使用EF 6,因此对您的帮助将不胜枚举。 谢谢

SQL Server支持一种称为“多个活动结果集”(MARS)的功能,MySQL不支持此功能,因此,您将看到错误。 您需要打开第二个连接并在内环中运行第二个查询。

谢谢! 我永远不会奇怪这样的事情! 看,我按照您的意思做了,并更改了代码,所以现在我猜它可以正常工作(直到现在可以),如果您有暗示可以接受,我还不是程序员,我什至不会说英语,但实际上谢谢! 我将“回答”中间注释,以便为可能需要它的其他人显示代码。

        var db = new apagartesteentityEntities();
        contatos con = new contatos();

        foreach (var cli in db.clientes)
        {
            Console.WriteLine("Nome do cliente: "+ cli.NomeClientes);

//第二个模型/连接位于“使用中”,因此它在循环中“死亡”(我猜)

            using(var db2 = new apagartesteentityEntities())               
            { 
            // MySql Nao suporta MARS (multiple actives result set)
            foreach (var cont in db2.contatos) 
            {
                if (cont.IdClientes == cli.IdClientes) {  // reads IF the FK matches the PK
                Console.WriteLine("Tipo contato: "+cont.TipoContato);
                Console.WriteLine("Valor do contato: "+cont.ValorContato);
                }
            }
            }
        Console.WriteLine("--------------------");
        }
        Console.Read();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM