跨多个 DbContext 的 EF Core 事务与队列消息

贪婪

跨多个 DbContex 存储/更新数据时使用什么方法?性能比较:以及在这种情况下何时使用什么:

 using (var scope = new TransactionScope())
        {
            using (var context1 = new ItemContext(userOptions))
            {
                context1.Items.Add(item);
                context1.SaveChanges();
            }

            using (var context2 = new OrderContext(orderOptions))
            {
                testOrder.ItemId = item.Id;
                context2.Orders.Add(testOrder);
                context2.SaveChanges();
            }

            if(testOrder.SunIsShining){
               using (var context1 = new ItemContext(itemOptions))
               {
                  item.SunIsShining= true;
                  context1.Items.Update(item);
                  context1.SaveChanges();
               }
            }
            scope.Complete();
        }

A. 上面的示例使用事务范围并在同一物理服务器中的不同上下文之间更改/更新记录。

B. 使用消息。例如在将用户保存到 db 之后。调用消息服务,将信息 msg 插入队列(项目信息记录)。然后 ItemOrderProcessingService 将读取该队列,说每 10 秒读取一次其中的所有新记录。并且批量创建订单,如果需要,也可以批量更新项目表中的某些项目状态。(如果需要,有回滚更改的逻辑)

何时使用哪种方法,优点/缺点是什么?fe 如果我们每天有大约 2k 笔交易,这是相当低的。每天有多少笔交易应该使用 B. 队列方法?

斯沃奇克

这是完全不同的方法。当您使用事务时,对所有上下文进行回滚要简单得多。在基于消息的系统中需要一些时间,直到您的消息将被所有服务处理,并且您应该处理服务失败并检查数据一致性

基于消息的团队需要付出更多努力来维护和支持处理消息的微服务,对于像您这样的小型应用程序,使用单体应用程序是可以的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

相同的 DbContext,使用 EF Core 的多个数据库

来自分类Dev

抽象 ef core 2 dbContext

来自分类Dev

成功保存更改后,EF Core dbcontext事务是否可能失败?

来自分类Dev

如何使用EF Core Power Tools在同一项目中管理多个dbcontext?

来自分类Dev

在ASP.NET Core WebApplicationFactory中重写EF Core DbContext

来自分类Dev

Net Core Worker Windows服务中的EF Core DBContext

来自分类Dev

.NET Core EF core中对dbcontext的并行调用

来自分类Dev

带有多个DBContext的EF 7迁移

来自分类Dev

带有多个DBContext的EF 7迁移

来自分类Dev

Scaffold-DbContext存储过程仅在EF Core中

来自分类Dev

如何使用EF Core中的DbContext基类访问实体?

来自分类Dev

应该在每个事务上创建EF dbContext

来自分类Dev

EF Core - 一次性 DbContext 和 Attach() - 或 - DbContext 作为成员 - 或 - 断开连接的实体

来自分类Dev

多个异步功能期间的.Net EF核心DbContext.Save()

来自分类Dev

.NET Core / EF.Core 3+将控制台日志添加到DbContext

来自分类Dev

扩展EF DBContext

来自分类Dev

刷新EF 6 DBContext

来自分类Dev

EF Core RC2 FinaI问题:尚未为此DbContext配置数据库提供程序

来自分类Dev

如何使用EF Core更新ASP.NET 5中的dbcontext脚手架?

来自分类Dev

如何在单元测试中验证EF Core DBContext配置

来自分类Dev

似乎没有处置使用依赖注入的ef-core dbcontext

来自分类Dev

EF Core 向 dbcontext 注入许多潜在的连接字符串

来自分类Dev

为什么在 EF Core 中每次 api 调用后自动处理 DbContext?

来自分类Dev

EF Core Scaffold-DbContext 表未包含在选择集中

来自分类Dev

EF Core创建多个外键列

来自分类Dev

在.NET Core控制台应用程序中为EF Core DbContext服务错误建立了依赖项注入

来自分类Dev

带有多个dbcontext的一项事务

来自分类Dev

带有多个dbcontext的一项事务

来自分类Dev

EF的DbContext的单例范围

Related 相关文章

  1. 1

    相同的 DbContext,使用 EF Core 的多个数据库

  2. 2

    抽象 ef core 2 dbContext

  3. 3

    成功保存更改后,EF Core dbcontext事务是否可能失败?

  4. 4

    如何使用EF Core Power Tools在同一项目中管理多个dbcontext?

  5. 5

    在ASP.NET Core WebApplicationFactory中重写EF Core DbContext

  6. 6

    Net Core Worker Windows服务中的EF Core DBContext

  7. 7

    .NET Core EF core中对dbcontext的并行调用

  8. 8

    带有多个DBContext的EF 7迁移

  9. 9

    带有多个DBContext的EF 7迁移

  10. 10

    Scaffold-DbContext存储过程仅在EF Core中

  11. 11

    如何使用EF Core中的DbContext基类访问实体?

  12. 12

    应该在每个事务上创建EF dbContext

  13. 13

    EF Core - 一次性 DbContext 和 Attach() - 或 - DbContext 作为成员 - 或 - 断开连接的实体

  14. 14

    多个异步功能期间的.Net EF核心DbContext.Save()

  15. 15

    .NET Core / EF.Core 3+将控制台日志添加到DbContext

  16. 16

    扩展EF DBContext

  17. 17

    刷新EF 6 DBContext

  18. 18

    EF Core RC2 FinaI问题:尚未为此DbContext配置数据库提供程序

  19. 19

    如何使用EF Core更新ASP.NET 5中的dbcontext脚手架?

  20. 20

    如何在单元测试中验证EF Core DBContext配置

  21. 21

    似乎没有处置使用依赖注入的ef-core dbcontext

  22. 22

    EF Core 向 dbcontext 注入许多潜在的连接字符串

  23. 23

    为什么在 EF Core 中每次 api 调用后自动处理 DbContext?

  24. 24

    EF Core Scaffold-DbContext 表未包含在选择集中

  25. 25

    EF Core创建多个外键列

  26. 26

    在.NET Core控制台应用程序中为EF Core DbContext服务错误建立了依赖项注入

  27. 27

    带有多个dbcontext的一项事务

  28. 28

    带有多个dbcontext的一项事务

  29. 29

    EF的DbContext的单例范围

热门标签

归档