public bool CreateTB_PROPERTY_MODELLByList(List<TB_PROPERTY_MODEL> entity)
{
try
{ //将集合转换成DataTable
DataTable dtTable = Untity.ListToDataTable(entity); var sqlConn = (SqlConnection)_dbContext.Database.Connection; ;
sqlConn.Open();
using (SqlTransaction transaction = sqlConn.BeginTransaction())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn, SqlBulkCopyOptions.Default, transaction))
{
bulkCopy.BatchSize = ;//多少条数据提交一次
bulkCopy.BulkCopyTimeout = ;//时间设置
bulkCopy.DestinationTableName = "TB_PROPERTY_MODEL"; //表名
try
{
//这里列一定要和数据库中的表的列要一样.和数据类型也一样。不然无法导入
foreach (DataColumn col in dtTable.Columns)
{
bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
}
bulkCopy.WriteToServer(dtTable);
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
LogHelper.Error(ex.Message);
throw ex.InnerException;
}
finally
{
bulkCopy.Close();
sqlConn.Close();
}
}
}
return true;
}
catch (SqlException ex)
{
LogHelper.Error(ex.Message);
throw ex.InnerException;
}
catch (DbException ex)
{
LogHelper.Error(ex.Message);
throw ex.InnerException;
}
}
        /// <summary>
/// List转换成Table
/// </summary>
/// <typeparam name="T">数据实体</typeparam>
/// <param name="entitys">要转换的List</param>
/// <returns>DataTable</returns>
public static DataTable ListToDataTable<T>(List<T> entitys)
{
var dt = new DataTable();
//检查实体集合不能为空
if (entitys == null || entitys.Count < )
{
return dt;
throw new Exception("需转换的集合为空");
}
//取出第一个实体的所有Propertie
Type entityType = entitys[].GetType();
PropertyInfo[] entityProperties = entityType.GetProperties();
//生成DataTable的structure
//生产代码中,应将生成的DataTable结构Cache起来,此处略 foreach (PropertyInfo t in entityProperties)
{
//dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
dt.Columns.Add(t.Name);
}
//将所有entity添加到DataTable中
foreach (object entity in entitys)
{
//检查所有的的实体都为同一类型
if (entity.GetType() != entityType)
{
throw new Exception("要转换的集合元素类型不一致");
}
var entityValues = new object[entityProperties.Length];
for (int i = ; i < entityProperties.Length; i++)
{
entityValues[i] = entityProperties[i].GetValue(entity, null);
}
dt.Rows.Add(entityValues);
}
return dt;
}

之前用的是EF的数据写入。感觉EF在写入的时候有点慢,可能是自己没有找到EF正确的方法。

最新文章

  1. git提交项目到已存在的远程分支
  2. Oracle 哈希连接原理
  3. 使用PHP的五个小技巧
  4. java去处重复输出
  5. Vertica笔记
  6. Laravel timestamps 设置为unix时间戳
  7. Highcharts动态赋值学习
  8. RM报表里的变量
  9. nginx的https配置
  10. JAVA 想让类无法new,可以使用private将类的构造函数改为私有的,这样new的时候就会报错了
  11. windows7添�windows2008R2域配置
  12. 配置并学习微信JS-SDK(2)—扫一扫接口http://www.qq210.com/shoutu/android
  13. 基本数据类型的常量池与String类型常量池解析
  14. 谷歌识图、google识图如何知道图片相似?
  15. 【C语言探索之旅】 第二部分第六课:创建你自己的变量类型
  16. 【原】Java学习笔记022 - 字符串
  17. 【Spring】SpringMVCの環境構築(簡)(Version3.1)
  18. java学习之动手实验
  19. 审核被拒绝。附近??Guideline 5.1.2
  20. 查看Linux服务器被映射的公网ip

热门文章

  1. # PHP - 使用PHPMailer发邮件
  2. Spring中Bean的作用域、生命周期
  3. 技术笔记:XMPP之openfire+spark+smack
  4. Linux+apache+mono+asp.net安装教程
  5. CSharpGL(9)解析OBJ文件并用CSharpGL渲染
  6. Linux网络编程-tcp缓存设置
  7. babel presets stage-x
  8. iOS----调试技巧,让你的开发事半功倍
  9. 常用的Webpack配置
  10. SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)