zoukankan      html  css  js  c++  java
  • 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的问题,下次再研究。

  • 相关阅读:
    LeetCode Power of Three
    LeetCode Nim Game
    LeetCode,ugly number
    LeetCode Binary Tree Paths
    LeetCode Word Pattern
    LeetCode Bulls and Cows
    LeeCode Odd Even Linked List
    LeetCode twoSum
    549. Binary Tree Longest Consecutive Sequence II
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/kim-meng/p/5795190.html
Copyright © 2011-2022 走看看