c# - 跨多个线程的 Linq-to-SQL DataContext

标签 c# multithreading linq-to-sql

如何跨多个线程处理 Linq-to_SQL DataContext?

我应该创建一个全局静态 DataContext 供所有线程使用并在最后提交更改,还是应该为每个线程创建一个 Context 并将该实例用于该线程内的所有内容?

最佳答案

DataContext 不是线程安全的;直接从多个线程使用它会导致#fail;具有全局静态数据上下文会导致#fail 并且会导致不受控制的内存增长(数据上下文包括身份管理器和每个获取对象的更改跟踪器;这只会增长 随着时间的推移,随着越来越多的物体被触摸)

理想情况下,数据上下文应该用于一个工作单元;旋转一个;做某事(在范围内绑定(bind) - 即不是整个应用程序生命周期),然后处理它。所以 IMO 这里真正的答案是“将它与那个工作单元联系起来”。只有您可以知道您的应用程序中的内容;它可以是单一方法,可以是网页上的页面请求,也可以是服务中的计时器“滴答”。谁知道...

关于c# - 跨多个线程的 Linq-to-SQL DataContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4918625/

相关文章:

sql - Linq到SQL : select optimization

c# - Windows 7 上的 LINQ 性能较慢

c# - Javascript ajax 调用无法访问我的 Web API Controller 页面。似乎无法获取正确的网址

c# - 如何从两个数组中过滤相同的字符串并只显示一次

c# - 查看线程未正确结束

java - 在 Java 中使用 Thread 进行 ArrayList<object> 操作

c# - 使用 linq 加载除另一个集合之外的集合

c# - 如何将转义字符 '\' 写入代码

c# - 我应该在 T-SQL 中进行错误处理吗?

java - 从线程更新 gui(另一个类)