c# - 无法将多个条目插入特定表
问题描述
我在 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();
解决方案
您发出的很可能是由于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();
}
推荐阅读
- android - 如何将多边形从谷歌地图存储到 sqLite 数据库
- selenium - 硒可以点击看不见的地方吗
- java - CameraX camera-core:1.0.0-beta01 在 Camera2Config.java defaultConfig() 崩溃
- java - 在 documentSnapShot 中获取值,但是当将其转换为对象时,对象返回 null,为什么?
- apache-kafka - 从 docker 容器中的命令连接到远程 kafka
- javascript - Javascript 标签 continue 语句在 while 循环内的函数中不起作用
- java - 结果为 List 的 GroupingBy
- php - Laravel 6 - 出售时减少产品
- angular - 将 StackBlitz 部署到 Firebase
- ibm-mq - 我如何知道 MQ 队列管理器何时重新启动?