/// <summary>批量插入</summary> /// <param name="dt"></param> /// <returns></returns> public Int32 BatchInsert(DbTable dt) { var tableName = Sql.Substring(" ")?.Trim(';'); var dal = DAL.Create(ConnName); // 执行反向工程,该建表就建表 //dal.CheckDatabase(); var table = dal.Tables?.FirstOrDefault(e => e.TableName.EqualIgnoreCase(tableName)); //if (table == null) throw new Exception($"在连接[{ConnName}]中无法找到数据表[{tableName}]"); if (table == null) { var ioc = ObjectContainer.Current; table = ioc.Resolve <IDataTable>(); table.TableName = tableName; for (var i = 0; i < dt.Columns.Length; i++) { var dc = table.CreateColumn(); dc.ColumnName = dt.Columns[i]; dc.DataType = dt.Types[i]; table.Columns.Add(dc); } dal.SetTables(table); } // 选取目标表和数据集共有的字段 tableName = dal.Db.FormatTableName(tableName); var columns = new List <IDataColumn>(); foreach (var dc in table.Columns) { if (dc.ColumnName.EqualIgnoreCase(dt.Columns)) { columns.Add(dc); } } return(dal.Session.Insert(tableName, columns.ToArray(), dt.Cast <IIndexAccessor>())); }