Массовое обновление в C #
Для вставки огромного количества данных в базу данных я использовал, чтобы собрать всю информацию о вставке в список и преобразовать этот список вDataTable
, Затем я вставляю этот список в базу данных черезSqlBulkCopy
.
Куда я отправляю свой сгенерированный списокLiMyList
которые содержат информацию обо всех объемных данных, которые я хочу вставить в базу данных
и передать его моей операции массовой вставки
InsertData(LiMyList, "MyTable");
гдеInsertData
является
public static void InsertData<T>(List<T> list,string TableName)
{
DataTable dt = new DataTable("MyTable");
clsBulkOperation blk = new clsBulkOperation();
dt = ConvertToDataTable(list);
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
using (SqlBulkCopy bulkcopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
{
bulkcopy.BulkCopyTimeout = 660;
bulkcopy.DestinationTableName = TableName;
bulkcopy.WriteToServer(dt);
}
}
public static DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}
Теперь я хочу сделать операцию обновления, есть ли способ для вставки данных делаетсяSqlBulkCopy
для обновления данных в базу данных из C # .Net