知识点
相关文章
更多最近更新
更多There is already an open DataReader associated with this Connection which must be closed first
2019-03-02 01:03|来源: 网路
使用MVC4 EF Linq获取foreach列表循环的时候遇到了如下的问题:报错提示
There is already an open DataReader associated with this Connection which must be closed first
解决方法如下红色所示:
@foreach (var item in Model.ToList())
{
@Html.ActionLink(@item.user.nickname + "(微信)", "../Mess/MessInfo", new { id = item.id })
}
将Model改成Model.ToList()的就ok了
转自:http://www.cnblogs.com/hww9011/p/3611592
相关问答
更多-
您仍然在阅读器中使用时重复使用相同的连接。 尝试在此处打开新连接 SqlCommand upCommand = new SqlCommand(updateString, db); upCommand.Parameters.AddWithValue("kol_fakt", (FUkolfakt - reduseLeft).ToString()); upCommand.ExecuteNonQuery();//HERE ERROR reduseLeft = 0; 但是,您最好重新组织代码,以便在仍然从上一个连接 ...
-
您的问题是您的代码打开DataReader ,然后在DataReader读取时执行SqlCommand 尝试更改此行: dr = comm.ExecuteReader() 至: dr = comm.ExecuteReader(CommandBehavior.CloseConnection) 更多: DataReader CommandBehavior 或者更改连接字符串以启用MARS(多个活动结果集)。 此设置允许在同一连接上检索多个只进,只读结果集。 例如 : connectionString= ...
-
使用嵌套命令时是否可以避免打开的DataReader异常?(Can I avoid the open DataReader exception when using nested commands?)[2022-07-16]
你可以使用本地连接(即本地的方法); 通过连接池,将连接保持为一个领域的优势是最小的,并且经常导致这种类型的...乐趣。 当然,如果您正在编辑数据,则可能会遇到阻塞自己的问题 - 可能会使用诸如TransactionScope类的方法进行缓解。 底部示例... 或者,您可以在连接上启用MARS(多个活动结果集); 应该这样做。 只需在连接字符串(SQL Server 2005及更高版本)中包含“MultipleActiveResultSets = True”即可。 public void FirstMeth ... -
与此连接关联的DataReader必须先关闭(DataReader associated with this Connection which must be closed first)[2022-11-09]
所以没有人给我解决方案,我试图从我自己的解决方案。 因此,人们建议关闭数据读取器,但这是我的问题,因为我是一名新开发人员,因此需要关闭数据读取器。 在执行命令之前,我在else子句中关闭了我的数据读取器。 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If Not String.IsNullOrEmpty(lblId.Text) Then Dim qu ... -
您为您的每个产品选择另一个请求。 但是你的产品被枚举,所以第一个datareader没有关闭。 这就是为什么你打开了多个数据采集器。 public ActionResult Index() { var products = _db.Products.ToArray() // force loading the results from database // and close the datareader ...
-
这只是在很多层面搞砸了 哈罗斯博士是假的 它会跳到其他地方 不开玩笑你仍然打开DataReader 然后重复cmd.Connection = con; 哈罗斯博士是真的 你关闭连接 然后它跳过其他地方 然后你尝试一个cmd.ExecuteNonQuery(); 在您已关闭的连接和一个甚至不是有效的ExecuteNonQuery的select语句上 首先,DataReader没有任何意义 只需要计数“SELECT count(*)FROM Registration WHERE Email = @ Email” ...
-
您应该关闭SqlDataReader 。 在这种情况下最好的方法是使用: GridView1.DataSource = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 或使用不同的方法,例如使用SqlDataAdapter和DataTable : string sql = "select * from Consommation " + "where idAbonnement = @ab " + ...
-
使用后您没有关闭阅读器: sqlCmd.CommandText = "SELECT * FROM GlassTable"; using (dataReader = sqlCmd.ExecuteReader()) { //Code to read rows with SqlDataReader and print them to a file. } 此外,您不必在不返回记录的查询上使用ExecuteReader 。 sqlCmd.CommandText = "DROP TABLE GlassTabl ...
-
你需要添加MultipleActiveResultSets=true; 到您的连接字符串。 You need to add MultipleActiveResultSets=true; to your connection string.
-
您正尝试在同一连接上安装多个打开的阅读器。 这通常称为“MARS”(多个活动结果集)。 MySql似乎不支持它。 您必须一次限制一个打开的阅读器,或使用多个连接,这样您就可以为每个阅读器建立一个连接。 我的建议是抛弃那些类似单身的东西,而是使用连接池和正确using块。 As suggested by Pikoh in the comments, using the using clause indeed solved it for me. Working code-snippet: getLastIdFr ...