ef-core-5.0 - 如何从 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);
}
}
}
解决方案
推荐阅读
- php - 如何从供应商文件夹中正确设置配置路径?
- mongoose - Mongoose 聚合匹配字段值等于没有 $expr 的变量?
- node.js - 使用 saml2-js 库从 SAML 请求创建 SAML 响应
- algorithm - 从推荐中删除重复项
- fortify - Big Sur 更新后,Fortify 审计工作台停止工作
- modelica - 在 Dymola 中使用固定步长求解器时如何选择步长?
- php - 文件上传仅适用于 <10Kb 的文件
- database - 关系型 DBMS 真的很难扩展吗?
- sql-server - 如何从 UDF 返回 MEMORY OPTIMIZED 表?
- python - 如何使用 python 将 Mysql 加载到 Elasticsearch