实体框架具有多个线程的单个上下文

SB2055

我有以下内容:

           await Task.WhenAll(
                 Task.Run(() => HandleJob("one"),
                 Task.Run(() => HandleJob("two"),
                 Task.Run(() => HandleJob("three"));

HandleJob在哪里:

       private async Task HandleJob(string param) {
              using (var db = new DbContext()) {
                     _numberService = new NumberService(db);
                     _numberService.DoThis(param);
              }
       }

而NumberService是这样的:

    public class NumberService {

           private readonly DbContext db;

           private CommService _commService;

           public NumberService(DbContext db) {
              this.db = db;
              _commService = new CommService(db);
           }


           public void DoThis(string param){
              _commService.DoThat(param);   
           }

     }

CommService是这样的:

     public class CommService {

           private readonly DbContext db;

           public CommService(DbContext db) {
              this.db = db;
           }

           public void DoThat(string param){
              db.Things.Add(param);
              db.SaveChanges();
           }

     }

我遇到一个问题,尝试运行此命令时看到以下内容:

EntityFramework.dll中发生类型为System.InvalidOperationException的异常,但未在用户代码中处理。创建模型时无法使用上下文。如果在OnModelCreating方法内部使用上下文,或者多个线程同时访问同一上下文实例,则可能引发此异常。注意,不能保证DbContext和相关类的实例成员是线程安全的。

我究竟做错了什么?我认为通过dbContext为每个线程使用新的线程,我会没事的。

SB2055

我是个白痴。这是因为我_numberService在async方法之外定义了,所以每个异步用法都覆盖了其他上下文。h

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django在单个视图中具有多个上下文

来自分类Dev

有界上下文和实体框架迁移

来自分类Dev

jQuery上下文菜单,具有多个操作的单个菜单

来自分类Dev

实体框架对象上下文刷新

来自分类Dev

处理实体框架上下文

来自分类Dev

实体框架上下文格式

来自分类Dev

实体框架上下文问题

来自分类Dev

实体框架对象上下文刷新

来自分类Dev

ASP.NET和多线程中每个请求的实体框架上下文

来自分类Dev

具有多个上下文的Spark作业失败

来自分类Dev

具有多个上下文的Spark作业失败

来自分类Dev

单个OpenGL上下文,多个视图

来自分类Dev

实体框架上下文中的实体是什么?

来自分类Dev

实体框架从上下文重新加载实体

来自分类Dev

实体框架上下文自动创建新实体

来自分类Dev

实体框架:根据上下文跟踪实体

来自分类Dev

实体框架,跨多个上下文的代码优先和一对多关系

来自分类Dev

实体框架6多个数据上下文共享事务

来自分类Dev

在Entity Framework 6中使用来自多个线程的单个上下文

来自分类Dev

实体框架5.0上下文重新加载

来自分类Dev

在Linqpad中获取实体框架上下文?

来自分类Dev

实体框架中的上下文缺少AsNoTracking()方法

来自分类Dev

是否需要处置实体框架上下文对象

来自分类Dev

实体框架6上下文未检索导航属性

来自分类Dev

查询您的实体框架上下文模型的API?

来自分类Dev

Web表单-实体框架上下文处理

来自分类Dev

定义上下文实体框架的最佳位置/方式

来自分类Dev

是否需要处置实体框架上下文对象

来自分类Dev

实体框架上下文生存期