我在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();
答案 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();
变量。
请记住,有两种方法可以解决此问题。
foreach (var i in details)
{
dbcontext.table.Add(new table
{
campo1 = i.value1,
campo2 = i.value2
});
}
await dbcontext.SaveChangesAsync();
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();
}