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())
{
    ...
}