首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BulkInsert与OracleDB的结合

BulkInsert与OracleDB的结合
EN

Stack Overflow用户
提问于 2018-07-03 12:45:02
回答 1查看 961关注 0票数 0

我的OracleDB上有一些关于OracleDB的问题。我需要插入几千个对象,所以我决定使用Nuget添加的EF.BulkInsert.Oracle,它是EF6.BulkInsertforOracle的扩展。

代码语言:javascript
运行
复制
          private IOracleDbContext _context;//Class property
    //method body:
  EF6.BulkInsert.ProviderFactory.Register<EF6.BulkInsert.Providers.OracleBulkInsertProvider>("BulkInsertProvider");
        using (var context = (OracleDbContext)_context)
        {
            using (var dbContextTransaction = context.Database.BeginTransaction())
            {
                try
                {
                    //Preparing list of objects

                    var opt = new EF6.BulkInsert.BulkInsertOptions();
                    opt.Connection = context.Database.Connection;
                    await context.BulkInsertAsync<ObjectType>(ObjectList,opt);

                    await context.SaveChangesAsync();
                    dbContextTransaction.Commit();
                    stopwatch.Stop();
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();
                    throw ex;
                }
            }
        }

在不添加opt (BulkInsertOptions对象)作为BulkInsert参数的情况下,它试图连接到SQLServer (不存在,因此导致连接失败)。在添加这个带有连接的BulkOptions之后,我得到一个异常,即连接已经是事务的一部分:/

传统的方法(_context.TableName.Add() )当然可以工作,但它需要不可接受的时间。

知道我在这里做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-05 07:47:02

我找到了更好的方法(BulkInsert仍然不合作)。我使用了数组绑定这里提到的

它将插入时间从~6分钟缩短到~1-1.5秒:D (7770条记录)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51154985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档