ASP MVC4中的MVC脚手架在访问页面时抛出错误(打开数据阅读器&多个连接)
本文关键字:数据 连接 错误 脚手架 MVC 中的 MVC4 访问 出错 ASP | 更新日期: 2023-09-27 17:55:02
我已经生成了一个实体(城市),现在我试图根据本教程生成MVC脚手架:http://www.codeproject.com/Articles/468777/Code-First-with-Entity-Framework-5-using-MVC4-and
我遇到的问题是,我在MySQL服务器上这样做,我得到以下错误:
已经有一个开放的数据读取器与此连接相关联必须先关闭
我环顾四周,注意到有些人必须在他们的connectionstring中启用MARS(多个活动结果集),但显然MySQL没有这样的参数。我也尝试了AllowBatch=True,但那也不起作用。这是我的connectionstring:
<add name="socialgeogroep6Entities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;AllowBatch=True;user id=socialgeogroep6;password=snow;database=socialgeogroep6"" providerName="System.Data.EntityClient" />
以前有人遇到过这个问题吗?如果有,你是如何解决的?如果能得到任何帮助,我将非常感激!
由于启用了延迟加载,我遇到了这个问题。您没有发布存储库代码,但我想知道这个查询是否导致了问题:
public ViewResult Index()
{
return View(cityRepository.AllIncluding(city => city.users, city => city.districts));
}
我使用Include()
语句执行急切加载,以便在一个查询中获得一个或两个子实体。如果我们说在repo中有一个名为All()
的函数返回一个IQueryable
,我们可以这样做:
// ...
var allCities = cityRepository.All().Include("users").Include("districts").ToList();
return View(allCities);
}
这将创建一个查询,该查询一次选择所有cities
及其填充的users
和districts
导航属性。一旦在消费代码中访问属性,ToList()
将执行查询并返回IEnumerable
而不是IQueryable
,后者将通过延迟加载进行枚举。
如果是不同的存储库函数导致了这个问题,那么以类似的方式将Include()
放入其中应该是很简单的。