Ваш выданный, скорее всего, вызван повторным использованием переменной regDet
в foreach
l oop.
Компилятор фактически изменит ваш foreach, чтобы он функционировал немного иначе, чем вы ожидаете. В конечном итоге ваш l oop будет вести себя так, как если бы он был написан так:
Table regDet;
foreach (var i in details)
{
regDet = new table
{
campo1 = i.value1,
campo2 = i.value2
};
dbcontext.table.Add(regDet);
}
await dbcontext.SaveChangesAsync();
Запись l oop таким образом может помочь подчеркнуть проблему. Мы перезаписываем переменную regDet
новыми значениями перед вызовом dbcontext.SaveChangesAsync();
. Имея это в виду, есть два способа исправить это.
- Пропустить переменную.
foreach (var i in details)
{
dbcontext.table.Add(new table
{
campo1 = i.value1,
campo2 = i.value2
});
}
await dbcontext.SaveChangesAsync();
Перемещение
dbcontext.SaveChangesAsync();
в
foreach
l oop.
foreach (var i in details)
{
var regDet = new table
{
campo1 = i.value1,
campo2 = i.value2
};
dbcontext.table.Add(regDet);
await dbcontext.SaveChangesAsync();
}