EF的连接对象 conventer DbConnection to SqlConnection
2016-06-08 14:46
260 查看
EF中批量导入.
使用示例
/// <summary> /// 为 System.Data.SqlClient 提供的用于批量操作的方法。 /// 一、SqlServer数据批量插入 /// SqlServer的批量插入很简单,使用SqlBulkCopy就可以,以下是该类的实现: /// </summary> public class MsSqlBatcher : IBatcherProvider { /// <summary> /// 将 <see cref="DataTable"/> 的数据批量插入到数据库中。 /// </summary> /// <param name="dataTable">要批量插入的 <see cref="DataTable"/>。</param> /// <param name="batchSize">每批次写入的数据量。</param> public void Insert(string Import_ImportToTableName, DataTable dataTable, List<DbCorresExcelColumn> DBCorresExcelColumn, DbConnection dbconn, DbTransaction sqlbulkTransaction) { if (dataTable == null) { throw new ArgumentException("参数datatable 为空了"); } if (dataTable.Rows.Count == 0) { return; } //先看看本身是不是Sql连接 SqlConnection sqlcon = dbconn as SqlConnection; if (sqlcon == null) { //再看看是不是EF的连接. var efcon = dbconn as System.Data.EntityClient.EntityConnection; if (efcon != null) { sqlcon = efcon.StoreConnection as SqlConnection; } } if (sqlcon == null) { throw new Exception("亲你连接的数据库不是mssqlserver."); } //sqlserver using (SqlBulkCopy bulkCopy = new SqlBulkCopy(con, SqlBulkCopyOptions.Default, sqlbulkTransaction as SqlTransaction)) { bulkCopy.DestinationTableName = Import_ImportToTableName; foreach (var dbcxls in DBCorresExcelColumn) { //bulkCopy.ColumnMappings.Add 前面的参数是本地的临时Table列名,后面的参数是数据库的列名 bulkCopy.ColumnMappings.Add(dbcxls.ExcelColumnName, dbcxls.DbTableName); } try { bulkCopy.BatchSize = 20000; bulkCopy.WriteToServer(dataTable); } catch (Exception ex) { throw ex; } finally { bulkCopy.Close(); } } }
使用示例
mkswEntities DB = new mkswEntities(); using (DbConnection conn = DB.Connection) { ... Insert(..., conn, ...); ... }
相关文章推荐
- 编译tomcat-redis-session-manager-master部署到tomcat上
- ORMLite操作数据库
- sqoop导入错误:Hive does not support the SQL type for column col_name
- SQL列折行查找
- PL/SQL调试存储过程
- sql查询重复记录、删除重复记录方法大全
- 学习练习 Oracle数据库小题
- oracle 数据字典
- SQL SERVER全面优化-------写出好语句是习惯
- MySQL用户权限设置方法
- mysql中的character-set-server设置
- SQL Server Migration Assistant for Oracle
- 本机(windows)链接 虚拟机redis
- oracle使用dblink连接sql server
- Mysql执行大文件sql语句
- Win2008 R2 64Bit下IIS环境安装memcache和memcached服务端的方法
- The path "C:\Oracle\Middleware\wlserver_10.3" contains the wrong version of WebLogic Server. Expect
- 学习练习 Oracle数据库小题 Students
- Redis Sentinel机制与用法说明【转】
- oracle中数据库自增列实现