我正在使用Linq到Sql连接来与数据库协作,我的windows表单应用程序可以处理多个线程,而这并不是DataClass的套件。我修改连接以支持MultipleActiveResultSets,得到了这个错误"An item with the same key has already been added.",我搜索了这个问题,只有两个答案:
我想lock DataClass,不知道在哪里锁定它,我肯定有人在多线程中成功地使用了Linq到Sql。
发布于 2012-09-04 20:08:37
为了扩展我在评论中所说的内容,并回答您的问题,我会将所有访问都看作是一个工作单元,例如(在某些数据访问类中):
public Order GetOrder(int id) {
// ctx could also be instantiated via an IoC/DI framework, etc
using(var ctx = CreateDataContext()) {
return ctx.Orders.SingleOrDefault(x => x.Id == id);
}
}
public void AddOrder(Order order) {
if(order == null) throw new ArgumentNullException("order");
// ctx could also be instantiated via an IoC/DI framework, etc
using(var ctx = CreateDataContext()) {
ctx.Orders.InsertOnSubmit(order);
ctx.SubmitChanges();
}
}关键点:数据上下文不会无限期地打开,并被竞争的线程重复使用。
https://stackoverflow.com/questions/12270417
复制相似问题