【问题标题】:How to create a DBContext as part of an existing transaction in Entity Framework Core如何在 Entity Framework Core 中创建 DBContext 作为现有事务的一部分
【发布时间】:2018-03-20 13:56:25
【问题描述】:

我的产品已经使用 ADO.Net 来访问 SQL Server,并且我正在使用 Entity Framework Core 来实现一些新功能。我遇到的问题是我有一些必须在单个事务中完成的操作,前几个操作是通过 ADO.Net 实现的,我需要使用 Entity Framework 添加一个额外的操作,所以我需要将事务传递给 DBContext .

当我需要使用现有连接时,我可以这样做:

var dbc = new MyDBContext(optionsBuilder.UseSqlServer(connection).Options)

在我传递事务而不是连接的地方是否有类似的东西? 我应该以完全不同的方式来做这件事吗?

【问题讨论】:

  • 谢谢@DavidG——这正是我想要的。如果您想将其放入答案中,我可以给您适当的信任。我一直在查看创建 DBContexts 的文档(就像在旧实体框架中所做的那样),所以这就是我自己没有找到它的原因.

标签: c# transactions ado.net entity-framework-core


【解决方案1】:

您可以执行类似的操作来使用现有的 SqlTransaction 创建 DbContext。这对我有用。我在同一个事务上同时使用 ADO.NET 和 EF 进行 CRUD 操作。

   //create connection and transaction do usual ADO.NET stuff

       SqlTransaction transaction = ... // existing transaction
        var existingConnection = transaction.Connection;
        var contextOwnsConnection = false;
       using (var db = new MyDbContext(existingConnection, contextOwnsConnection))
        {
           db.Database.UseTransaction(transaction);
            //do something with db
        }

        // optionally do usual ADO.NET stuff  ....

        transaction.Commit();

【讨论】:

猜你喜欢
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
相关资源
最近更新 更多