实体框架批量添加超过100,000个项目

时间:2016-03-23 09:26:49

标签: entity-framework bulkinsert

我正在构建一个可以存储股票价格数据的应用程序。我的一个方法需要采取一系列项目,目前为c。 100,000个项目,但一次将超过1,000,000个,并将它们添加到实体数据库。这是我目前的添加逻辑: -

var tickContext = new DataAccess();

            // array is created, add it to the entity database
            for (int j = 0; j < tickDataArray.Length; j++)
            {
                MarketTickData temp2 = new MarketTickData();
                if(j > 1)
                    temp2 = tickDataArray[j-1];

                MarketTickData temp = tickDataArray[j]; 

                tickContext.TickBarData.Add(tickDataArray[j]);
                tickContext.Configuration.AutoDetectChangesEnabled = false;
                tickContext.Configuration.ValidateOnSaveEnabled = false;

                if (j % 200 == 0)
                {
                    tickContext.SaveChanges();
                    tickContext.Dispose();
                    tickContext = new DataAccess();
                }
            }

            // add remaining items to database
            tickContext.SaveChanges();

            tickContext.Configuration.AutoDetectChangesEnabled = true;
            tickContext.Configuration.ValidateOnSaveEnabled = true;

当我在保存之前在各种大小的tickContext上测试我的逻辑时,我没有看到性能上的巨大改进。在上下文大小为50时,我的添加量为47秒,1000秒为54秒,最好为200秒,需要44秒。但它仍然相对缓慢。

有没有办法改善这个?

0 个答案:

没有答案