如何在C#中将用户定义表types作为存储过程parameter passing

在SQL Server 2008中,我们可以定义一个表types并将其用作Stored Procedures的参数。 但是如何在C#调用这个SP中使用它呢? 换句话说,如何使用SQL Server 2008的这个新特性创build一个表或列表并将它传递到C#代码中的存储过程?

你需要在CodeProject上看到这个例子 。

SqlParameter param = cmd.Parameters.AddWithValue("@FileDetails", dt); 

其中dt是一个DataTable,而@fileDetails参数是SQL中的一个表types:

 create type FileDetailsType as table ( FileName varchar(50), CreatedDate varchar(50), Size decimal(18,0) ) 

编辑 : 此MSDN开发人员指南文章也将帮助。

最简单的方法是通过传递一个DataTable作为参数。 看看这里的一些例子。

从表值参数 ,链接到杰夫肉丸杨的答案 :

System.Data.SqlClient支持从DataTable,DbDataReader或System.Collections.Generic.IEnumerable([T:System.Collections.Generic.IEnumerable`1)]对象中填充表值参数。 您必须使用SqlParameter的TypeName属性为表值参数指定一个types名称。 TypeName必须与以前在服务器上创build的兼容types的名称匹配。 以下代码片段演示了如何configurationSqlParameter以插入数据。