假设我在“customersFromFile”列表中有 11,000 个客户,在 DB 中有 8000 个客户
使用下面的代码,我希望 EF 将更新 DB 中现有的 8000 个客户,并将剩下的 3000 个添加到 DB
控制台正确打印“更新的客户:8000”和“添加到客户:3000
但是在 DB 现在我总共有 19000 个客户,尽管现有的 8000 个已成功更新。
请帮助我。
DEMOEntities context = new DEMOEntities();
context.Configuration.AutoDetectChangesEnabled = false;
context.Configuration.ValidateOnSaveEnabled = false;
int i = 0;
foreach (var customerInDB in context.Customers)
{
//Console.WriteLine("Update customer: " + customerInDB.CustomerID.ToString());
customerInDB.Name = customersFromFile[i].Name;
customerInDB.CIC = customersFromFile[i].CIC;
customerInDB.IndustryCode = customersFromFile[i].IndustryCode;
context.Entry(customerInDB).State = EntityState.Modified;
i++;
}
Console.WriteLine("Updated customers: " + i.ToString());
int j = 0;
for (; i < customersFromFile.Count; i++)
{
context.Customers.Add(customersFromFile[i]);
j++;
}
Console.WriteLine("Added to customer:" + j.ToString());
Console.WriteLine("Saving changes to customer...");
context.SaveChanges();
更新 2:感谢 TomTom 的回答,我在形成 CustomerFromFile 列表时将客户添加到上下文中的错误。我花了几个小时才发现这个:(