private MssqlCommandBulkCopyDataSet GetBulkCopyDataset(Type type, object value) { if (type == typeof(MssqlCommandBulkCopyDataSet)) { return(value as MssqlCommandBulkCopyDataSet); } var ds = (DataSet)null; if (type == typeof(DataSet)) { ds = value as DataSet; } if (type == typeof(DataTable)) { var table = value as DataTable; if (table != null) { ds = new DataSet { EnforceConstraints = false }; ds.Tables.Add(table); } } if (ds == null) { return(null); } return(new MssqlCommandBulkCopyDataSet(FieldSizer.FieldSizerOf(ds), ds)); }
private T GetResult(SqlDataReader reader) { var type = typeof(T); if (type == typeof(DataSet) || type == typeof(DataTable) || type == typeof(MssqlCommandBulkCopyDataSet)) { var ds = new DataSet { EnforceConstraints = false }; while (!reader.IsClosed) { ds.Tables.Add().Load(reader); } object result = ds; if (type == typeof(DataTable)) { result = ds.Tables.Count > 0 ? ds.Tables[0] : new DataTable(); } if (type == typeof(MssqlCommandBulkCopyDataSet)) { result = new MssqlCommandBulkCopyDataSet(FieldSizer.FieldSizerOf(ds), ds); } return((T)result); } return(EntityWriter.To <T>(reader)); }
private void CreateTempTable(DataTable table, FieldSizer sizer, int index) { using (var cmd = new SqlCommand(GetTempTableQuery(table, sizer, index), _connection)) { cmd.CommandTimeout = int.MaxValue; cmd.ExecuteNonQuery(); } }
private string GetTempTableQuery(DataTable table, FieldSizer sizer, int index) { var sb = new StringBuilder(); sb.AppendFormat("IF OBJECT_ID('TEMPDB..#{0}') IS NOT NULL DROP TABLE #{0} ", table.TableName); sb.AppendFormat("CREATE TABLE #{0} (", table.TableName); for (int i = 0; i < table.Columns.Count; i++) { sb.AppendFormat("{0} [{1}] {2} NULL", i > 0 ? "," : "", table.Columns[i].ColumnName, GetSqlTypeText(table.Columns[i].DataType, sizer[index][i])); } sb.AppendFormat(")"); return(sb.ToString()); }
public EntityReader(object entity, Type geType = null) { _fieldSizer = new FieldSizer(); _source = new List <object>(); _buffer = new List <object>(); _entity = entity; if (_entity == null) { return; } _type = _entity.GetType(); _geType = Je.sys.GenericOf(_type) ?? _type; _geType = geType != null && geType.IsAssignableFrom(_geType) ? geType : _geType; _map = CommandEntity.GetMap(_geType); if (Je.sys.IsSimple(_type)) { _source.Add(_entity); _fields = null; } else if (_entity is IDictionary) { _source.Add(_entity); _fields = GetFields(_type); } else if (_entity is IEnumerable) { foreach (var item in (IEnumerable)_entity) { _source.Add(item); } _fields = GetFields(_geType); } else { _source.Add(_entity); _fields = GetFields(_geType); } var currentType = _map[_mapCounter++]; _fields = GetFields(currentType); foreach (var item in _source) { _buffer.Add(item); } }
public static FieldSizer FieldSizerOf(DataSet ds) { var sizer = new FieldSizer(); for (int tabs = 0; tabs < ds.Tables.Count; tabs++) { var tab = ds.Tables[tabs]; for (int rows = 0; rows < tab.Rows.Count; rows++) { var row = tab.Rows[rows]; for (int cols = 0; cols < tab.Columns.Count; cols++) { sizer.SetSize(tabs, cols, row[cols]); } } } return(sizer); }
public MssqlCommandBulkCopyDataSet(FieldSizer sizer, DataSet source) { Sizer = sizer; Source = source; }