Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
        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);
        }