好吧,我有一个带有集合的模型,可以在循环结构中保存更改
foreach(Customer objCustomer in listCustomer)
{
try
{
db.Customer.Add(objCustomer);
db.SaveChanges();
}
catch(Exception ex)
{
db.Entry(objCustomer).State = EntityState.Detach;
}
}
当它在与实体相关的集合中抛出任何异常时,下一个异常会抛出异常。
我试图分离整个集合,但它不起作用
foreach(Customer objCustomer in listCustomer)
{
try
{
db.Customer.Add(objCustomer);
db.SaveChanges();
}
catch(Exception ex)
{
for (int i = 0; i < objCustomer.Address; i++)
{
db.Entry(objCustomer.Address[i]).State = EntityState.Detach;
}
db.Entry(objCustomer).State = EntityState.Detach;
}
}
有什么建议吗?
答案 0 :(得分:0)
我认为第二个代码的例外可能从未发生过?
此外,您的代码有任何交易吗?
答案 1 :(得分:0)
试试这个?警告未经测试!
using(var db = new Context())
{
foreach(Customer objCustomer in listCustomer)
{
var exists = db.Customer.FirstOrDefault(x => x.CustomerID == objCustomer.CustomerID;
if( exists = null)
{
db.Customer.Add(objCustomer);
}
else
{
db.Entry(objCustomer).State = EntityState.Modified;
}
db.SaveChanges();
}
}
答案 2 :(得分:0)
我不知道为什么但是它有效,我在这篇文章中使用它就像它指的那样
EntityCollection Clear() and Remove() methods
objCustomer.Address.ToList().ForEach(x => db.Entry(x).State = EntityState.Detached);
这几乎就像我在使用&#34;之前所做的那样&#34;
非常感谢大家