我的代码中的字典定义为:
Dictionary<int, StringBuilder> invoiceDict = new Dictionary<int, StringBuilder>();
每个 KeyValuePair 中的每个 Value Dictionary 实际上是当前创建的三个独立的值,如下所示:
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
)
从字典获取可以传递到表值参数中的内容的最佳方法是什么?我应该使用字典以外的东西吗?或者,我是否需要将 Dictionary 解析为另一个更好的数据结构?
SqlParameter invoicesParam = cmd.Parameters.AddWithValue("@Invoices", invoiceDict.Values);
invoicesParam.SqlDbType = SqlDbType.Structured;
谢谢。
最佳答案
由于围绕 TVP 的文档有点差(需要的不仅仅是 IEnumerable),而且无论如何都必须解析字典的内容,我决定将字典循环到 DataTable 中,这似乎是首选对象喂一个 TVP。
关于c# - 从 Dictionary<int, StringBuilder> 到表值 SqlParameter。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1413364/