/// <summary> /// Bulkcopies the list of data into the database /// </summary> /// <typeparam name="T"></typeparam> /// <param name="data"></param> public void BulkCopy <T>(List <T> data) where T : IModelBase, new() { var columns = new T().GetFields().ToDictionary(p => p.Key, q => q.Value.GetType()); using (SqlConnection conn = new SqlConnection(_connectionString)) { conn.Open(); SqlTransaction trans = conn.BeginTransaction(); DataTable table = new DataTable(); table.Columns.AddRange(columns.Select(c => new DataColumn(c.Key, c.Value)).ToArray()); SqlBulkCopy bulk = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, trans) { DestinationTableName = ModelBaseHelper.GetTableName <T>() }; foreach (var column in columns) { bulk.ColumnMappings.Add(new SqlBulkCopyColumnMapping(column.Key, column.Key)); } data.ForEach(row => table.Rows.Add(row.ToObjectArray())); bulk.WriteToServer(table); trans.Commit(); } }
public void Create <T>() where T : IModelBase { using (SqlConnection conn = new SqlConnection(_connectionString)) { conn.Open(); var query = ModelBaseHelper.CreateTableExistsCode(ModelBaseHelper.GetSchema <T>(), ModelBaseHelper.GetTableName <T>()); query += "BEGIN\r\n"; query += ModelBaseHelper.CreateTableCommand <T>() + ")\r\n"; query += "END"; SqlCommand cmd = new SqlCommand() { Connection = conn, CommandText = query }; cmd.ExecuteNonQuery(); conn.Close(); } }