1

我正在尝试在我的消息处理程序中使用 Rebus 事务上下文。我已阅读此处的文档并在此处查看示例,但是我不知道 Windsor 是如何工作的。

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

谢谢

4

1 回答 1

1

我可以推荐你看一下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();

whereMyCustomUnitOfWork可以是您想要的任何东西,例如创建 EF 数据库上下文并SaveChanges在其上调用和诸如此类的类。

您可以在 wiki 页面上阅读有关 Unit Of Work 的更多信息,或者直接转到使用运行代码演示 Rebus.UnitOfWork 的示例。

于 2017-04-18T10:45:14.403 回答