- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在 DbContext 下使用 SqlBulkCopy。我的 Sql 连接字符串有 UserId 和密码,这就是为什么要将连接对象传递给 SqlBulkCopy 我正在创建具有 SqlCredential 的 SqlConnection 对象并将 SqlConnection 对象传递给 SqlBulkCopy。我的 SqlBulkCopy 初始化如下所示。
using (var conn = new SqlConnection("", cred))
{
using (var bulkCopy = new SqlBulkCopy("",SqlBulkCopyOptions.CheckConstraints |
SqlBulkCopyOptions.KeepNulls,DbContext.Database.CurrentTransaction))
{
// bulkCopy code
}
}
但这里的问题是构造函数的第三个参数应该是一个SqlTransaction。在我的例子中,我已经有了我的 DbContext,它与我的服务交易一起登记。
如何将 DbContextTransaction(DbContext.Database.CurrentTransaction) 转换为 SqlTransaction。
最佳答案
您需要一个 dbContext 实例或一个 IDbTransaction 来获取 UnderlyingTransaction:
数据库上下文:
var bulkCopy = new SqlBulkCopy("", SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.KeepNulls,
(myDbContext.Database.CurrentTransaction.UnderlyingTransaction) as SqlTransaction)) ;
IDbTransaction:
using (IDbTransaction tran = conn.BeginTransaction())
{
var bulkCopy = new SqlBulkCopy("", SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.KeepNulls, tran as SqlTransaction);
}
SqlTransaction继承自DbTransaction!
注意:
默认情况下,大容量复制操作作为独立操作执行。批量复制操作以非事务方式发生,没有回滚的机会。如果您需要在发生错误时回滚全部或部分大容量复制,您可以使用 SqlBulkCopy 管理的事务,在现有事务中执行大容量复制操作(如在 DbContext 示例中并将其作为参数传递是可选的) ,或者在 IDbTransaction 的示例中登记在 Transaction 中。
关于c# 将 DbContextTransaction 转换为 SqlTransaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391801/
这段代码: using(var context = this.contextFactory.Create()) // creates a context using(var transaction =
我正在尝试在 DbContext 下使用 SqlBulkCopy。我的 Sql 连接字符串有 UserId 和密码,这就是为什么要将连接对象传递给 SqlBulkCopy 我正在创建具有 SqlCre
我需要使用 DbContextTransaction在 .Net 标准库的一个类中,我找不到相应的 nuget 包,我正在移植这个 https://github.com/mehdime/DbConte
当我试图用多个线程调用相同的方法时出现这个错误:连接已经在一个事务中,不能参与另一个事务。 EntityClient 不支持并行事务。 我发现我的问题与此类似:SqlException from En
我是一名优秀的程序员,十分优秀!