Невозможно вставить несколько записей в таблицу c - PullRequest
0 голосов
/ 20 апреля 2020

У меня следующая проблема с API в Entity Framework Core 2.2: я пытаюсь сохранить 3 записи (детали) в таблицу, и она хранит только одну из них. Я проделал одну и ту же процедуру несколько раз, и она отлично работает, но в этой таблице сохраняется только 1 запись. Мой код такой:

foreach (var i in details)
{
    var regDet = new table
        {
            campo1 = i.value1,
            campo2 = i.value2
        };

    dbcontext.table.Add(regDet);
}

await dbcontext.SaveChangesAsync();

1 Ответ

0 голосов
/ 20 апреля 2020

Ваш выданный, скорее всего, вызван повторным использованием переменной 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();

. Имея это в виду, есть два способа исправить это.

  1. Пропустить переменную.

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();
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...