EF 添加方式比較


using System;
using System.Collections.Generic;
using DBAccess.Models;
using EntityFramework.BulkInsert.Extensions;
namespace LinqDemoTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var db = new HIPContext())
            {
                List<TablebulkCopy> list = new List<TablebulkCopy>();
                for (int i = 0; i < 1000; i++)
                {
                    list.Add(new TablebulkCopy {  Name = "Name" + i });

                }
                //Add range 方式插入數據庫
                DateTime dt1 = DateTime.Now;
                db.TablebulkCopies.AddRange(list);
                db.SaveChanges();
                DateTime dt2 = DateTime.Now;
                TimeSpan t = dt2 - dt1;
                Console.WriteLine("A:Ef Range add :" + t.TotalMilliseconds);

                //Bulk insert 方式插入
                dt1 = DateTime.Now;
                db.BulkInsert(list);
                db.SaveChanges();
                dt2 = DateTime.Now;

                t = dt2 - dt1;
                Console.WriteLine("B:Ef bulk insert :" + t.TotalMilliseconds);
               
                
                //逐個插入,一次提交

                dt1 = DateTime.Now;
                foreach (var item in list)
                {

                    db.TablebulkCopies.Add(item);

                }
                dt2 = DateTime.Now;
                t = dt2 - dt1;
                db.SaveChanges();
                Console.WriteLine("C:Ef add one by one   save changes  one time  :" + t.TotalMilliseconds);

                //逐個添加,逐個提交
                dt1 = DateTime.Now;
                foreach (var item in list)
                {

                    db.TablebulkCopies.Add(item);
                    db.SaveChanges();
                }
                dt2 = DateTime.Now;
                t = dt2 - dt1;
               
                Console.WriteLine("D:Ef add & save changes  one  by one   :" + t.TotalMilliseconds);
                Console.ReadKey();
            }


        }

    }
}

 

結果分析:

插入相同數據,bulk insert的方式耗時最短,令我驚訝的是 逐個插入 再提交的方式 耗時居然比 addrange的方式快很多。

當然同等條件下異步提交(SaveChangesAsync),耗時會短點。但這個要考慮到異步操作過程中,假如使用同一個上下文對象的話,就不好控制了。

addrange 和add的問題,下次再研究。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM