System.InvalidOperationException: '已经有一个打开的 DataReader 与此连接关联,必须先将其关闭
System.InvalidOperationException: 'There is already an open DataReader associated with this Connection which must be closed first
我正在看其他例子,但是我没有打开任何东西,我在哪里关闭信息。它发生在我去 _DBContext.SaveChanges();
此外,代码表示如果 Wedding 小于 DateTimeNow 则执行此操作,但是,它会为所有日期执行此操作。我已经阅读了许多问题和答案,作为一个试图在控制器中创建方法的新手,它们对我来说都非常不同。我应该在 conroller 还是其他地方制作这个方法?
// Delete old weddings from comparing date times
public void DeleteOldWeddings()
{
foreach (Wedding date in _DBContext.Weddings)
{
var result = DateTime.Compare(date.WedDate, DateTime.Now);
if (result < 0)
{
Console.WriteLine("This " + date.UserID);
_DBContext.Weddings.Remove(date);
_DBContext.SaveChanges();
}
}
}
foreach 循环的枚举器是打开的。在尝试使用 DbContext 进行其他操作之前,调用 .ToArray() 或类似方法来完成读取查询结果。
foreach(var date in _DBContext.Weddings.ToArray())
{
...
}
我正在看其他例子,但是我没有打开任何东西,我在哪里关闭信息。它发生在我去 _DBContext.SaveChanges(); 此外,代码表示如果 Wedding 小于 DateTimeNow 则执行此操作,但是,它会为所有日期执行此操作。我已经阅读了许多问题和答案,作为一个试图在控制器中创建方法的新手,它们对我来说都非常不同。我应该在 conroller 还是其他地方制作这个方法?
// Delete old weddings from comparing date times
public void DeleteOldWeddings()
{
foreach (Wedding date in _DBContext.Weddings)
{
var result = DateTime.Compare(date.WedDate, DateTime.Now);
if (result < 0)
{
Console.WriteLine("This " + date.UserID);
_DBContext.Weddings.Remove(date);
_DBContext.SaveChanges();
}
}
}
foreach 循环的枚举器是打开的。在尝试使用 DbContext 进行其他操作之前,调用 .ToArray() 或类似方法来完成读取查询结果。
foreach(var date in _DBContext.Weddings.ToArray())
{
...
}