每个MQ消耗一次如何创建EF Core dbcontext?

时间:2019-12-06 08:18:15

标签: c# asp.net-core rabbitmq entity-framework-core

在Startup.cs中,我配置dbcontext和ConsumerService:

    services.AddDbContextPool<FanjiaOpenPlatformApiDbV2Context>(
      options =>
        options.UseSqlServer(Configuration.GetConnectionString("OpenPlatform"), b => b.UseRowNumberForPaging())
        .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
    );


    services.AddScoped<ISubscriber, ConsumerService>();

但是每当收到一条消息供消费时,都会抛出异常

  

无法访问已处置的对象。此错误的常见原因是   放置从依赖项注入中解决的上下文,并   然后稍后尝试在您的其他位置使用相同的上下文实例   应用。如果您正在调用Dispose()   上下文,或将上下文包装在using语句中。如果你是   使用依赖注入,应该让依赖注入   容器负责处理上下文实例

如果我配置dbcontext单例,则该异常不存在

     services.AddDbContext<FanjiaOpenPlatformApiDbV2Context>(
          options =>
            options.UseSqlServer(Configuration.GetConnectionString("OpenPlatform"), b => b.UseRowNumberForPaging())
            .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking), ServiceLifetime.Singleton
      );

0 个答案:

没有答案