【发布时间】:2011-02-23 09:46:20
【问题描述】:
static Object LockEx=new Object();
public void SaveMyData(IEnumerable<MyData> list)
{
lock (LockEx)
{
using (PersistencyContext db = new PersistencyContext())
{
foreach (var el in list)
{
try
{
db.MyData.Add(el);
db.SaveChanges();
}
catch (DbUpdateException)
{
db.Entry(el).State = EntityState.Modified;
db.SaveChanges();
}
}
}
}
}
从多个线程调用此方法。现在我使用静态锁来避免2个线程同时保存数据。虽然这是错误的,因为我只想保存数据。 catch 用于创建更新查询,以防插入(添加)因条目已存在而失败。
如果我移除锁会发生什么。 SaveChanges 将如何工作?我的代码应该是什么样子?谢谢
【问题讨论】:
标签: c# multithreading entity-framework-ctp5 locks