У меня есть код, который имеет словарь, определенный как:
Dictionary<int, StringBuilder> invoiceDict = new Dictionary<int, StringBuilder>();
Каждое значение в каждой KeyValuePair словаря на самом деле представляет собой три отдельных значения, которые в настоящее время создаются следующим образом:
invoiceDict.Add(pdfCount+i, new StringBuilder(invoiceID.Groups[1].ToString() + "|" + extractFileName + "|" + pdfPair.Key));
Как видите, эти три значения разделены знаком '|'. Количество «строк» в словаре может варьироваться от 600 до 1200. Я хотел бы использовать параметр с табличным значением, чтобы получить все это в моей БД SQL Server 2008 за одну операцию.
Табличный параметр определяется следующим образом:
CREATE TYPE dbo.BatchSplitterInvoices AS TABLE
(
InvoiceID varchar(24),
NotePath varchar(512),
BatchID varchar(50)
)
CREATE PROCEDURE dbo.cms_createBatchSplitterInvoices (
@Invoices dbo.BatchSplitterInvoices READONLY,
@StaffID int
)
Как лучше всего перейти из словаря к тому, что можно передать в табличное значение? Должен ли я использовать что-то еще, кроме словаря? Или мне нужно разобрать словарь в другую, лучшую структуру данных?
SqlParameter invoicesParam = cmd.Parameters.AddWithValue("@Invoices", invoiceDict.Values);
invoicesParam.SqlDbType = SqlDbType.Structured;
Спасибо.