向实体添加多个项时出错

时间:2016-11-30 06:38:10

标签: asp.net-mvc linq entity-framework-6

for (int i = 0; i < skus.Count; i++)
{
    sku item = new sku();
    item = skus[i];
    sku sku = CompanyDbContext.skus.Where(s => s.item_no == item.item_no).FirstOrDefault();

    if (sku == null) // ok to insert [no duplicate item numbers]
    {
        CompanyDbContext.skus.Add(item);                             
    }

}
CompanyDbContext.SaveChanges();

我正在

  

集合被修改枚举操作可能无法执行

错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题是你修改了你正在迭代的东西。作为最佳实践,您应该更新您的方法:

//get search predicat from List<sku> skus
var item_nos = skus.Select(s=>s.item_no).ToList();
//items already in repo
var addedItems = CompanyDbContext.skus.Where(s => item_nos.Contains(s.item_no)).ToList();
var newItems = skus.Except(addedItems).ToList();
foreach(var sku in newItems){
    CompanyDbContext.skus.Add(item);  
}
CompanyDbContext.SaveChanges();