首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何锁定DataClass

如何锁定DataClass
EN

Stack Overflow用户
提问于 2012-09-04 19:51:39
回答 1查看 101关注 0票数 0

我正在使用Linq到Sql连接来与数据库协作,我的windows表单应用程序可以处理多个线程,而这并不是DataClass的套件。我修改连接以支持MultipleActiveResultSets,得到了这个错误"An item with the same key has already been added.",我搜索了这个问题,只有两个答案:

  • 只在主线程中使用您的DataClass;
  • 检索表时锁定DataClass;

我想lock DataClass,不知道在哪里锁定它,我肯定有人在多线程中成功地使用了Linq到Sql。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-04 20:08:37

为了扩展我在评论中所说的内容,并回答您的问题,我会将所有访问都看作是一个工作单元,例如(在某些数据访问类中):

代码语言:javascript
复制
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();
    }
}

关键点:数据上下文不会无限期地打开,并被竞争的线程重复使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12270417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档