I recently had the requirement to bulk load data into a SQL database. Easy enough, but since I was using the Entity Framework, most of the work has already been done for me. The plan is as follows: Use SqlBulkCopy with a DataTable as an input. In order to do this, I will need to create some headers and then add the required data as rows before blasting them into the SQL Database. ConcurrentQueue<MyObject> items = GetMyItems(); // method not included Type t = (new MyObject()).GetType(); var dt = SetHeader(t); AddItems(dt, items); Load(dt, "MyTable"); // Add the properties as columns to the datatable private DataTable SetHeader(Type t) { var dt = new DataTable(); PropertyInfo[] pi = t.GetProperties(); foreach (var p in pi) { if (string.Compare(p.PropertyType.Name, typeof(Guid).Name, true) == 0) { dt.Columns.Add(p.Name, typeof(Guid)); } else { dt.Columns.Add(p.Name); } } return dt; } // add each row as a CSV to the D...