我有 200 万个“pb”对象实例。我想将它添加到我的数据库中。由于内存的原因,我将我的对象列表拆分为列表集合,并且在“for”循环中,我尝试每次迭代将 10'000 个对象实例添加到数据库中。
这是我的代码
for (int i = 0; i < splittedList.Count; i++)
{
using(MyEntities db = new MyEntities()) //DB context
{
List<pb> outputPBs = splittedList[i];
db.pb.AddRange(outputPBs);
db.SaveChanges();
}
}
不幸的是,第一次迭代添加了 10'000 个实例,但下一个迭代添加了 10'370 个实例而不是 10'000 个。此错误会传播到最后一次迭代。
我进行了长时间的调试:我使用 AddRange 添加了正确的列表,但是 db.pb.Local 在 AddRange 执行后包含 10'370 个对象。
这额外的 370 个对象是上一次迭代的实例。
你可以帮帮我吗?
这是我用来拆分列表的代码:
public static List<List<object>> Split(List<object> source)
{
return source
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / 3)
.Select(x => x.Select(v => v.Value).ToList())
.ToList();
}
编辑:完成
我解决了一个问题。问题与一对多关系有关。我创建了树数据结构,并在与分支和叶子不同的上下文中添加了根