1

我正在使用带有实体框架的存储库模式,我在每个存储库中注入 DbContext。我有多个存储库供单个 MassTransit 消费者使用。每个存储库必须在使用单个消息的范围内共享 DbContext。

我需要在 DbContext 上放置每个消息的生命周期范围。我怎样才能做到这一点?

        For<DbContext>().Use<DbContext>();
        For<MyConsumer>().Use<MyConsumer>();
        For<IRepository1>.Use<Repository1>();
        For<IRepository2>.Use<Repository2>();
        For<IServiceBus>().Singleton().Use("bookingServicesServiceBus", ctx =>
        {
            var bus = ServiceBusFactory.New(sbc =>
            {
                sbc.Subscribe(s => s.LoadFrom(ctx.GetInstance<IContainer>()));
            });

            return bus;
        });
4

1 回答 1

0

解决方案很明显。MassTransit.Structuremap nuget 包实际上使用嵌套容器处理每个消息的范围。

但是,出于某种未知原因,我将 DbContext 注册为 HybridHttpOrThreadLocalScoped。

于 2015-03-30T17:29:01.283 回答