zoukankan      html  css  js  c++  java
  • SqlBulkCopy 批量插入List<T>

            public virtual void AddBySqlBulkCopy(IEnumerable<TEntity> entities)
            {
                List<PropertyInfo> pList = new List<PropertyInfo>();
                DataTable dt = new DataTable();
                Array.ForEach<PropertyInfo>(typeof(TEntity).GetProperties(), p =>
                {
                    pList.Add(p);
                    dt.Columns.Add(p.Name, p.PropertyType);
                });
                entities.ForEach(item =>
                {
                    DataRow row = dt.NewRow();
                    pList.ForEach(p => row[p.Name] = p.GetValue(item, null));
                    dt.Rows.Add(row);
                });
                if (dt != null && dt.Rows.Count > 0)
                {
                    var dbContext = _context as DbContext;
                    TableAttribute temp = (TableAttribute)typeof(TEntity).GetCustomAttributes(typeof(TableAttribute), false).First();
                    using (SqlBulkCopy bulk = new SqlBulkCopy(dbContext.Database.Connection.ConnectionString))
                    {
                        bulk.BatchSize = 1000;
                        bulk.BulkCopyTimeout = 100;
                        bulk.DestinationTableName = temp.Name;
                        bulk.WriteToServer(dt);
                    }
                }
            }
  • 相关阅读:
    Java多线程同步和异步问题
    最优二叉查找树
    岛屿的周长
    Mac 环境下 go 国内代理配置
    岛屿数量
    字符串解码
    环形链表 II
    颜色分类
    无重复字符的最长子串
    完全平方数
  • 原文地址:https://www.cnblogs.com/tianyang1027/p/14156170.html
Copyright © 2011-2022 走看看