无法在特定表中插入多个条目

时间:2020-04-20 01:42:17

标签: c# entity-framework-core

我在Entity Framework Core 2.2中使用API​​时遇到以下问题:我试图将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 :(得分:-1)

您发出的通知很可能是由于在regDet循环中重复使用foreach变量引起的。

编译器实际上将修改您的foreach以使其功能与您期望的稍有不同。最终,您的循环将像这样编写:

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

    dbcontext.table.Add(regDet);
}

await dbcontext.SaveChangesAsync();

以这种方式编写循环可以帮助强调问题。在调用regDet

之前,我们正在用新值覆盖dbcontext.SaveChangesAsync();变量。

请记住,有两种方法可以解决此问题。

  1. 忽略变量。

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

await dbcontext.SaveChangesAsync();
  1. dbcontext.SaveChangesAsync();移到foreach循环中。
foreach (var i in details)
{
    var regDet = new table
        {
            campo1 = i.value1,
            campo2 = i.value2
        };

    dbcontext.table.Add(regDet);
    await dbcontext.SaveChangesAsync();
}

相关问题