В конечном итоге я пытаюсь выполнить массовую вставку значений из словаря в базу данных.
Вот как настроен мой словарь:
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();
}
}
}
Как должен выглядеть каждый DataRow в DataTable:
ключ, ValueNumber, ValueString, ValueBinary, ValueDateTime
Где «ключ» - это ключ в каждой записи в Словаре.
Если бы «ключ» был правильным в объекте «Запись», то я бы невопрос, я ожидаю.Но это не так.