C# ASP MVC4中的MVC Scaffold在访问页面时抛出错误(打开数据读取器和多个连接)
我已经生成了一个实体(城市),现在我尝试根据本教程使用MVC脚手架生成脚手架: 我遇到的问题是,我在MySQL服务器上执行此操作时,出现以下错误: 已存在与此连接关联的打开的DataReader 必须先关闭它 我环顾四周,发现有些人必须在他们的connectionstring中启用MARS(多个活动结果集),但MySQL显然没有这样的参数。我还尝试了AllowBatch=True,但也没有成功。这是我的连接字符串:C# ASP MVC4中的MVC Scaffold在访问页面时抛出错误(打开数据读取器和多个连接),c#,mysql,entity-framework,entity-framework-4,asp.net-mvc-4,C#,Mysql,Entity Framework,Entity Framework 4,Asp.net Mvc 4,我已经生成了一个实体(城市),现在我尝试根据本教程使用MVC脚手架生成脚手架: 我遇到的问题是,我在MySQL服务器上执行此操作时,出现以下错误: 已存在与此连接关联的打开的DataReader 必须先关闭它 我环顾四周,发现有些人必须在他们的connectionstring中启用MARS(多个活动结果集),但MySQL显然没有这样的参数。我还尝试了AllowBatch=True,但也没有成功。这是我的连接字符串: <add name="socialgeogroep6Entities" c
<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(“用户”).Include(“地区”).ToList();
返回视图(所有城市);
}
这将创建一个查询,同时选择所有城市
及其用户
和地区
导航属性。ToList()
将执行查询并返回一个IEnumerable
,而不是IQueryable
,一旦在消费代码中访问属性,它将通过延迟加载枚举
如果是另一个存储库函数导致了此问题,那么以类似的方式将
Include()
处理到该函数中应该很简单。这可能有很多问题。第一个mysql只支持1个连接。第二个用户在尝试绑定IEnumberable list b/c时经常遇到问题,因为它使读卡器保持打开状态。请包括您的控制器和查看codeHi@DaveA,谢谢您的回复。我制作了代码的粘贴箱:Controller:View:(这一个是索引视图)生成的实体:我注意到,如果我转到例如cities/Detail/5,该页面确实工作。我也可以进入编辑页面。但另一个问题是,它不会将国家选项呈现为下拉列表,而只是为我提供数字输入(ID也是如此)。这不是MVC Scaffold的全部内容吗?从我找到的帖子中,我想说,将绑定类型改为LIST而不是IEnumerable将“关闭”阅读器。足球压倒了我的一天,但我会看看你们的代码,并检查为什么脚手架下拉失败tmrw。