网站出现"已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"的解决方案

来源:互联网 发布:淘宝上如何找牙签弩 编辑:程序博客网 时间:2024/06/16 14:36

解决方案有两种:

1、数据库为SQL Server 2005版本时,可以在web.config数据库链接串中加入MultipleActiveResultSets=true。

2、进行重复操作之前,将数据查询结果放入内存中,再进行使用。

 

    我的web.config数据库链接串中原来是有MultipleActiveResultSets=true的,但是开发是的服务器是sql2005,部署的服务器是sql2000,因此才出现了问题。

     因此只能用第二种解决方案,修改源代码。

      var contacts = from c in db.Contactselect c;foreach (Contact c in contacts){if (c.Phones.IsLoaded == false)c.Phones.Load();if (c.Phones.Count > 0){Console.WriteLine(c.LastName);foreach (ContactPhone p in c.Phones){Console.WriteLine("\t"+p.ContactPhoneId);}}}


改成

  var contacts = from c in db.Contactselect c;List<Connect> results = contacts.ToList();foreach (Contact c in results){if (c.Phones.IsLoaded == false)c.Phones.Load();if (c.Phones.Count > 0){Console.WriteLine(c.LastName);foreach (ContactPhone p in c.Phones){Console.WriteLine("\t"+p.ContactPhoneId);}}}



 

原创粉丝点击