EFCore/C#-已修改集合->;操作可能无法执行

EFCore/C#-已修改集合->;操作可能无法执行,c#,entity-framework-core,C#,Entity Framework Core,我有以下循环。第一次迭代成功后,我会得到以下错误: 在for循环中的任何位置,我都没有更改weeklyReportsList或weeklyReport1.dailReports,因此我不知道错误来自何处,我似乎找不到可能修改集合的位置 代码 foreach (var weeklyReport1 in weeklyReportsList) { foreach(var dailyReport in weeklyReport1.DailyRep

我有以下循环。第一次迭代成功后,我会得到以下错误:

for
循环中的任何位置,我都没有更改
weeklyReportsList
weeklyReport1.dailReports
,因此我不知道错误来自何处,我似乎找不到可能修改集合的位置

代码

foreach (var weeklyReport1 in weeklyReportsList)
            {
                foreach(var dailyReport in weeklyReport1.DailyReports)
                {
                    _context.Attach(dailyReport);

                    User user = GetDataUser(Convert.ToInt32(User.FindFirst(ClaimTypes.PrimarySid).Value));

                    if (user == null)
                    {
                        _toastNotification.AddErrorToastMessage("Utilizador não encontrado.");
                        OnGet();
                        return Page();
                    }
                    else
                    {
                        dailyReport.UserCreator = user;
                    }

                    /*dailyReport.States = GetDataStates(state);
                    _context.Entry(dailyReport).Reference(dr => dr.States).IsModified = true;*/

                    dailyReport.EstimatedDate = nextDate;
                    _context.Entry(dailyReport).Property(dr => dr.EstimatedDate).IsModified = true;

                    dailyReport.WeeklyReportId = nextWeeklyReport.Id;
                    dailyReport.WeekDay = GetWeekDayName((DateTime)dailyReport.EstimatedDate);

                    try
                    {
                        await _context.SaveChangesAsync();
                    }
                    catch (DbUpdateException e)
                    {
                        _toastNotification.AddErrorToastMessage("Falha ao editar Registo");
                        Console.Write(e);
                        return RedirectToPage("Index");
                    }

                    _context.Entry(dailyReport).State = EntityState.Detached;
                    await CreateLog(dailyReport.Id);
                }
            }

public async Task<IActionResult> CreateLog(int id)
        {
            DailyReport editedDailyReport = GetDailyReport(id);
            User user = GetDataUser(Convert.ToInt32(User.FindFirst(ClaimTypes.PrimarySid).Value));
            LogReports logReports = new LogReports(editedDailyReport, "Edição Registo Atrasado", user.Id);
            _context.LogReportsReception.Add(logReports);

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException e)
            {
                Console.Write(e);
                _toastNotification.AddWarningToastMessage("Log Registo não criado");
            }
            return null;
        }
foreach(weeklyReportsList中的变量weeklyReport1)
{
foreach(在weeklyReport1.DailReports中的var DailReport)
{
_上下文。附加(DailReport);
User User=GetDataUser(Convert.ToInt32(User.FindFirst(ClaimTypes.PrimarySid.Value));
if(user==null)
{
_toastNotification.AddErrorToastMessage(“Utilizador não encontrado.”);
OnGet();
返回页();
}
其他的
{
dailyReport.UserCreator=用户;
}
/*DailReport.States=GetDataStates(状态);
_context.Entry(dailyReport).Reference(dr=>dr.States).IsModified=true*/
DailReport.EstimatedDate=下一个日期;
_context.Entry(dailyReport).Property(dr=>dr.EstimatedDate).IsModified=true;
dailyReport.WeeklyReportId=nextWeeklyReport.Id;
dailyReport.WeekDay=GetWeekDayName((DateTime)dailyReport.EstimatedDate);
尝试
{
wait_context.SaveChangesAsync();
}
捕获(DbUpdateException e)
{
_toastNotification.AddErrorToastMessage(“Falha ao编辑注册表”);
控制台。写入(e);
返回至Topage(“索引”);
}
_context.Entry(dailyReport.State=EntityState.Distached;
等待CreateLog(dailyReport.Id);
}
}
公共异步任务CreateLog(int-id)
{
DailyReport editedDailyReport=GetDailyReport(id);
User User=GetDataUser(Convert.ToInt32(User.FindFirst(ClaimTypes.PrimarySid.Value));
LogReports LogReports=新日志报告(editedDailyReport,“Edição Registo Atrasado”,user.Id);
_context.logReports异常.Add(logReports);
尝试
{
wait_context.SaveChangesAsync();
}
捕获(DbUpdateException e)
{
控制台。写入(e);
_toastNotification.AddWarningToastMessage(“日志注册não criado”);
}
返回null;
}

PS:所有其他函数(
Get…()
)仅与数据检索相关。没有任何属性

在迭代过程中,不能修改使用foreach迭代的集合。 因此,不能以这种方式修改图元。 但是,您可以循环浏览集合的副本。例如,循环实例化处的实例Collection.ToList()。这将允许您修改循环中的实际集合,同时不更改集合的“副本”。 您可以通过更改以下内容来验证这一点:

foreach(var dailyReport in weeklyReport1.DailyReports)


这一切如期而至。不过,我不知道我是如何试图改变收藏的,因为在任何地方我都没有改变
weeklyReport1
weeklyReport1.DailyReports
。这是我在foreach循环之前定义的一个变量,我再也不调用它了。。。
foreach(var dailyReport in weeklyReport1.DailyReports.ToList())