private void SaveDatabase(List<trades> list)
{
using (SMTERPEntities smterpe = new SMTERPEntities())
{
foreach (var item in list)
{
trades trade = smterpe.trades.FirstOrDefault(a => a.tid == item.tid);
if (trade != null)
{
smterpe.Entry(trade).CurrentValues.SetValues(item);
}
else
{ smterpe.Entry<trades>(item).State = EntityState.Added; }
}
smterpe.SaveChanges();
}
}
使用 smterpe.Entry<trades>(item).State = EntityState.Modified;
出现错误:ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
解决三种方法:
1、对取到的trade进行赋值
2、在smterpe.trades后面加AsNoTracking()
3、用上面方法