You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8中NServiceBus 8搭配EF Core 8事务Outbox配置问题

.NET 8 + NServiceBus 8 + EF Core 8 事务Outbox适配配置

EF Core 8 已移除Database.UseTransaction方法,原EF Core 7版本的NServiceBus事务共享代码需调整,以下是适配后的实现:

endpointConfiguration.RegisterComponents(c =>
{
    c.AddScoped(b =>
    {
        var session = b.GetRequiredService<ISqlStorageSession>();

        var context = new ReceiverDataContext(new DbContextOptionsBuilder<ReceiverDataContext>()
            .UseSqlServer(session.Connection)
            .Options);

        // 替换为EF Core 8支持的事务关联方式
        context.Database.EnlistTransaction(session.Transaction);

        // 确保Outbox事务提交前刷新EF上下文变更
        session.OnSaveChanges((s, token) => context.SaveChangesAsync(token));

        return context;
    });
});

关键说明

  • 使用EnlistTransaction替代已移除的UseTransaction,将NServiceBus Outbox的事务与EF Core上下文绑定,实现事务共享
  • session.OnSaveChanges回调确保EF上下文的变更在Outbox事务提交前执行,保证业务数据与消息发送的原子性

内容的提问来源于stack exchange,提问作者Darthg8r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:24:54