首页 > 解决方案 > 如何从 EF Core 5 DBContext 事务对象获取 SqlTransaction 对象,因为我需要将其传递给 SqlBulkCopy 操作

问题描述

我正在尝试在 DbContext 上启动事务并对上下文进行一些操作,然后想将相同的事务作为第三个参数传递给 SqlBulkCopy 操作。

在 EF Core 5 中,DbContent 类我没有找到一种方法来获取可以传递给 SqlBulkCopy 操作的 SqlTransaction/DbTransaction 对象。在代码中,_contextTransaction 对象的类型是 DbContextTransaction,它似乎是最新 EF Core 中 MS 的一个重大变化。为了便于理解,我在代码中添加了[不兼容]。

如果有人可以提出解决方法/解决方案。

using (var _context = new DBContext())
{
            
    using (var _contextTransaction = _context.Database.BeginTransaction())
        {
            
          _context.SomeEntity.Add(obj);
          _context.SaveChanges();
          
          
          using (SqlBulkCopy bulkCopy = new SqlBulkCopy(_context.Database.GetDbConnection() as SqlConnection, SqlBulkCopyOptions.Default, _context.Database.CurrentTransaction [not compatible]))
                            {
                                bulkCopy.DestinationTableName = "SomeTable";
                                bulkCopy.BulkCopyTimeout = 10000;
                                bulkCopy.BatchSize = 10000;
                                ...........
                                await bulkCopy.WriteToServerAsync(partition);
                            }
        }
      }

标签: ef-core-5.0

解决方案


推荐阅读