在消息处理程序中使用 rebus TransactionContext

Use rebus TransactionContext within a message handler

我正在尝试在我的消息处理程序中使用 Rebus 事务上下文。 我已经阅读了文档 here and have seen the sample here,但是我不知道温莎是如何工作的。

有人可以举例说明在没有任何 IOC 容器的情况下将 ITransactionContext 与 EF 一起使用,以了解其工作方式吗?

谢谢

我可以建议您看一下 Rebus.UnitOfWork 包,因为它提供了更高级别的 API 来实现自定义工作单元 – 无论是否使用 IoC 容器。

使用 Rebus.UnitOfWork 你可以这样做:

Configure.With(...)
    .(...)
    .Options(o => {
        o.EnableUnitOfWork(Create, Commit, RollBack, Cleanup);
    })
    .Start();

//....

static MyCustomUnitOfWork Create() => new MyCustomUnitOfWork();

static void Commit(MyCustomUnitOfWork uow) => uow.Commit();

static void RollBack(MyCustomUnitOfWork uow) => uow.RollBack();

static void Cleanup(MyCustomUnitOfWork uow) => uow.Dispose();

其中 MyCustomUnitOfWork 可以是您想要的任何内容,例如class 创建一个 EF 数据库上下文并调用 SaveChanges 等等。

您可以使用 运行 代码阅读有关 the wiki page about Unit Of Work, or go directly to the sample that demonstrates Rebus.UnitOfWork 的更多信息。