private DataTable ToDdateTable(List <T> datas) { DataTable tempDataTable = ReflectionInoCore <DataTable> .GetInstance().GetOrCreate("BulkCopyAsync" + typeof(T).FullName, () => { if (AsName == null) { return(queryable.Where(it => false).Select("*").ToDataTable()); } else { return(queryable.AS(AsName).Where(it => false).Select("*").ToDataTable()); } } ); var dt = new DataTable(); foreach (DataColumn item in tempDataTable.Columns) { dt.Columns.Add(item.ColumnName, item.DataType); } dt.TableName = GetTableName(); var columns = entityInfo.Columns; var isMySql = this.context.CurrentConnectionConfig.DbType.IsIn(DbType.MySql, DbType.MySqlConnector); foreach (var item in datas) { var dr = dt.NewRow(); foreach (var column in columns) { if (column.IsIgnore || column.IsOnlyIgnoreInsert) { continue; } var name = column.DbColumnName; if (name == null) { name = column.PropertyName; } var value = ValueConverter(column, PropertyCallAdapterProvider <T> .GetInstance(column.PropertyName).InvokeGet(item)); if (isMySql && column.UnderType == UtilConstants.BoolType) { if (value.ObjToBool() == false) { value = DBNull.Value; } } else if (column.UnderType == UtilConstants.DateTimeOffsetType && value != null) { value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value); } dr[name] = value; } dt.Rows.Add(dr); } return(dt); }
private void SetInsertItemByEntity(int i, T item, List <DbColumnInfo> insertItem) { if (item == null) { return; } foreach (var column in EntityInfo.Columns) { if (column.IsIgnore || column.IsOnlyIgnoreInsert) { continue; } var isMapping = IsMappingColumns; var columnInfo = new DbColumnInfo() { Value = PropertyCallAdapterProvider <T> .GetInstance(column.PropertyName).InvokeGet(item), DbColumnName = column.DbColumnName, PropertyName = column.PropertyName, PropertyType = UtilMethods.GetUnderType(column.PropertyInfo), TableId = i }; if (column.DbColumnName == null) { column.DbColumnName = column.PropertyName; } if (isMapping) { columnInfo.DbColumnName = GetDbColumnName(column.PropertyName); } if (column.IsJson) { columnInfo.IsJson = true; } if (column.IsArray) { columnInfo.IsArray = true; } if (columnInfo.PropertyType.IsEnum() && columnInfo.Value != null) { columnInfo.Value = Convert.ToInt64(columnInfo.Value); } if (column.IsJson && columnInfo.Value != null) { if (columnInfo.Value != null) { columnInfo.Value = this.Context.Utilities.SerializeObject(columnInfo.Value); } } //var tranColumn=EntityInfo.Columns.FirstOrDefault(it => it.IsTranscoding && it.DbColumnName.Equals(column.DbColumnName, StringComparison.CurrentCultureIgnoreCase)); if (column.IsTranscoding && columnInfo.Value.HasValue()) { columnInfo.Value = UtilMethods.EncodeBase64(columnInfo.Value.ToString()); } insertItem.Add(columnInfo); } }
private DataTable ToDdateTable(List <T> datas) { DataTable tempDataTable = ReflectionInoCore <DataTable> .GetInstance().GetOrCreate("BulkCopyAsync" + typeof(T).FullName, () => { if (AsName == null) { return(queryable.Where(it => false).Select("*").ToDataTable()); } else { return(queryable.AS(AsName).Where(it => false).Select("*").ToDataTable()); } } ); var dt = new DataTable(); foreach (DataColumn item in tempDataTable.Columns) { dt.Columns.Add(item.ColumnName, item.DataType); } dt.TableName = GetTableName(); var columns = entityInfo.Columns; foreach (var item in datas) { var dr = dt.NewRow(); foreach (var column in columns) { if (column.IsIgnore || column.IsOnlyIgnoreInsert) { continue; } var name = column.DbColumnName; if (name == null) { name = column.PropertyName; } var value = ValueConverter(column, PropertyCallAdapterProvider <T> .GetInstance(column.PropertyName).InvokeGet(item)); dr[name] = value; } dt.Rows.Add(dr); } return(dt); }