如何在Entity Framework Core

时间:2018-03-20 13:56:26

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

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

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

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

在传递事务而不是连接时,是否存在类似的内容? 我应该以完全不同的方式做这件事吗?

1 个答案:

答案 0 :(得分:0)

您可以执行类似的操作以使用现有的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();