【发布时间】:2011-07-20 22:40:20
【问题描述】:
我最终要做的是将字典中的值批量插入到数据库中。
这是我的字典的设置方式:
public class Record
{
public int ValueNumber;
public string ValueString;
public byte[] ValueBinary;
public DateTime ValueDateTime;
}
public Dictionary<string, Record> Elements = new Dictionary<string, Record>();
我最终想这样做:
IEnumerable<DataRow> query = Elements.AsEnumerable();
// Create a table from the query.
DataTable dt = query.CopyToDataTable<DataRow>();
// Insert into database
SqlBulkUtilities.BulkInsertDataTable(ConnectionString, "Orders", dt);
这是我的 SqlBulkUtilities 的样子:
public class SqlBulkUtilities
{
public static void BulkInsertDataTable(string connectionString, string tableName, DataTable table)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlBulkCopy bulkCopy =
new SqlBulkCopy
(
connection,
SqlBulkCopyOptions.TableLock |
SqlBulkCopyOptions.FireTriggers |
SqlBulkCopyOptions.UseInternalTransaction,
null
);
bulkCopy.DestinationTableName = tableName;
connection.Open();
bulkCopy.WriteToServer(table);
connection.Close();
}
}
}
DataTable 中的每个 DataRow 应该是这样的:
键、ValueNumber、ValueString、ValueBinary、ValueDateTime
其中“key”是字典中每个条目的键。
如果“键”在“记录”对象中是正确的,那么我希望没有问题。但事实并非如此。
【问题讨论】:
标签: c# sql-server linq linq-to-sql linq-to-objects