首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自BulkInsertAsync的EFCore.BulkExtensions似乎没有插入任何东西

来自BulkInsertAsync的EFCore.BulkExtensions似乎没有插入任何东西
EN

Stack Overflow用户
提问于 2021-02-03 15:00:50
回答 1查看 2.1K关注 0票数 2

我使用EFCore.BulkExtensions最多将10万条记录批量插入到数据库中。

我的问题是,由于某种原因,BulkInsertAsync不向DB插入任何记录。我知道这是一个异步调用,但我已经等待了半个小时,没有插入任何数据。常规的、同步的BulkInsert调用可以工作,但是由于它占用了大量的进程时间,所以非常不理想。

有谁知道为什么BulkInsertAsync BulkInsert 在这种情况下不能工作,但是BulkInsert有吗?

下面是相关代码,它将二进制数据(从另一台计算机传输)封送到C结构中,将C结构添加到列表中,然后将列表批量插入到数据库中。

代码语言:javascript
复制
            IList<object> records = new List<object>();
            using (var db = new RecordContext())
            {
                // keep going until we process all the data; numRecs is at most 100,000
                for (int i = 0; i < numRecs; i++)
                {
                    // marshal the data into the struct and map it to its database struct
                    var tempStruct = Marshal.PtrToStructure<T>(dataPtr);
                    records.Add(tempStruct);
                    dataPtr += Marshal.SizeOf<T>();
                }
                db.BulkInsertAsync(records);
            }

以下是相关的上下文代码:

代码语言:javascript
复制
    public class RecordContext : DbContext
    {
        public RecordContext() : base(GetOptions()) 
        { 
            // disable change tracking for performance
            ChangeTracker.AutoDetectChangesEnabled = false;
        }

        private static DbContextOptions GetOptions()
        {
            return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder(), new Settings().recordsConnectionString).Options;
        }
        // . . .
    }

以下连接字符串是从设置传入的:Data Source=localhost;Integrated Security=True;TrustServerCertificate=True;ApplicationIntent=ReadWrite;Initial Catalog=Records

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-03 15:59:31

这个方法应该做些什么--如果你等待的话。

所以,而不是:db.BulkInsertAsync(records); do:await db.BulkInsertAsync(records);

本质上,您告诉它执行一个异步任务,然后退出创建/拥有该任务的方法,不调用await,导致任务被放弃。异步任务有一些微妙的魔力,LOL。

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

https://stackoverflow.com/questions/66030123

复制
相关文章

相似问题

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