public bool ExecuteBlueCopy() { var IsBulkLoad = false; if (Entitys == null || Entitys.Length <= 0) { return(IsBulkLoad); } if (Entitys.First() == null && Entitys.Length == 1) { return(IsBulkLoad); } DataTable dt = new DataTable(); Type type = typeof(T); var entity = this.Context.EntityMaintenance.GetEntityInfo <T>(); dt.TableName = this.Builder.GetTranslationColumnName(entity.DbTableName); //创建属性的集合 List <PropertyInfo> pList = new List <PropertyInfo>(); //把所有的public属性加入到集合 并添加DataTable的列 Array.ForEach(entity.Columns.ToArray(), p => { if (!p.IsIgnore && !p.IsOnlyIgnoreInsert) { pList.Add(p.PropertyInfo); dt.Columns.Add(p.DbColumnName); } }); DataRow row = null; foreach (T item in Entitys) { row = dt.NewRow(); pList.ForEach(p => { var name = p.Name; if (entity.Columns.Any(it => it.PropertyName == name)) { name = entity.Columns.First(it => it.PropertyName == name).DbColumnName; } row[name] = GetValue(p, item); }); dt.Rows.Add(row); } var dllPath = AppDomain.CurrentDomain.BaseDirectory + "failFiles"; DirectoryInfo dir = new DirectoryInfo(dllPath); if (!dir.Exists) { dir.Create(); } var fileName = dllPath + "\\" + Guid.NewGuid().ToString() + ".csv"; var dataTableToCsv = DataTableToCsvString(dt); File.WriteAllText(fileName, dataTableToCsv, new UTF8Encoding(false)); MySqlConnection conn = this.Context.Ado.Connection as MySqlConnection; try { this.Context.Ado.Open(); // IsolationLevel.Parse MySqlBulkLoader bulk = new MySqlBulkLoader(conn) { CharacterSet = GetChara(), FieldTerminator = ",", FieldQuotationCharacter = '"', EscapeCharacter = '"', LineTerminator = "\r\n", FileName = fileName, NumberOfLinesToSkip = 0, TableName = dt.TableName, Local = true, }; bulk.Columns.AddRange(dt.Columns.Cast <DataColumn>().Select(colum => colum.ColumnName).Distinct().ToArray()); IsBulkLoad = bulk.Load() > 0; //执行成功才删除文件 if (IsBulkLoad && File.Exists(fileName)) { File.Delete(fileName); } } catch (MySqlException ex) { throw ex; } finally { CloseDb(); } return(IsBulkLoad);; }