次のように定義された Dictionary を持つコードがあります。
Dictionary<int, StringBuilder> invoiceDict = new Dictionary<int, StringBuilder>();
ディクショナリの各 KeyValuePair の各値は、実際には現在次のように作成されている 3 つの個別の値です。
invoiceDict.Add(pdfCount+i, new StringBuilder(invoiceID.Groups[1].ToString() + "|" + extractFileName + "|" + pdfPair.Key));
ご覧のとおり、3 つの値は「|」で区切られています。ディクショナリの「行」数は、600 ~ 1200 の範囲です。テーブル値パラメーターを使用して、SQL Server 2008 DB のすべてを 1 回の操作で取得したいと考えています。
テーブル値パラメーターは次のように定義されます。
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;
ありがとう。