/// <summary> /// 将实体集合中的所有数据导入数据库,如果数据已经存在则修改(先删除再插入)否则直接插入。如果实体中的数据只包含部分字段的数据,请勿使用该方法。 /// </summary> /// <param name="entityList">同一实体类集合</param> /// <param name="bulkCopyModel">是否使用批量插入的方式更新,只支持SQLSERVER。 /// 取值含义:0,不使用批量复制,1,批量复制前删除数据库中对应的重复记录,2,不检查重复,直接批量插入 /// </param> /// <returns>操作受影响的行数</returns> public int ImportData(List <EntityBase> entityList, int bulkCopyModel) { int count = 0; if (entityList == null || entityList.Count == 0) { return(0); } AdoHelper db = DefaultNewDataBase; #if (CMD_FAST) //如果是SQLSERVER,考虑批量复制的方式 if (bulkCopyModel > 0 && db is SqlServer) { if (bulkCopyModel == 1) { //将目标数据库中对应的数据删除 db.BeginTransaction(); try { count = DeleteDataInner(entityList, db); db.Commit(); } catch (Exception ex) { db.Rollback(); throw ex; } } //执行大批量复制 DataTable source = EntitysToDataTable <EntityBase>(entityList); SqlServer.BulkCopy(source, db.ConnectionString, source.TableName, 500); return(entityList.Count); } else { db.BeginTransaction(); try { count = ImportDataInner(entityList, db); db.Commit(); } catch (Exception ex) { db.Rollback(); throw ex; } } #else db.BeginTransaction(); try { count = ImportDataInner(entityList, db); db.Commit(); } catch (Exception ex) { db.Rollback(); throw ex; } #endif return(count); }