根据MSDN,>>>>>>>>>>
[0, 1, 2] 0.33016179294984127
[2, 0, 1] 0.7797639530009745
[1, 2, 0] 0.6292245916315391
>>>>>>>>>>
支持从System.Data.SqlClient
,DataTable
或DbDataReader
个对象填充表值参数。
我编写了以下代码,使用IEnumerable<SqlDataRecord>
对象填充表值paremeter:
IEnumerable<SqlDataRecord>
完美无缺。
MSDN页面上写着:
您还可以使用从
static void Main() { List<int> idsToSend = ... using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand command = new SqlCommand(@"SELECT ... FROM ... INNER JOIN @ids mytable ON ...", connection); command.Parameters.Add(new SqlParameter("@ids", SqlDbType.Structured) { TypeName = "int_list_type", Direction = ParameterDirection.Input, Value = GetSqlDataRecords(idsToSend) //returns IEnumerable<SqlDataRecord> }); SqlDataReader reader = command.ExecuteReader(); //consume reader... } }
派生的任何对象来流式传输行 数据到表值参数。
我想使用自定义DbDataReader
来传递行数据。像这样:
DbDataReader
我在初始代码示例中更改了以下行:
public class CustomDataReader : DbDataReader
{
public CustomDataReader(IEnumerable<int> values)
{
}
//implementation of other abstract methods and fields required by DbDataReader
//...
}
如果我运行代码,它会在执行Value = GetSqlDataRecords(idsToSend)
=>
Value = new CustomDataReader(idsToSend)
期间给出以下异常:
未处理的类型&#39; System.NotSupportedException&#39;发生了 在System.Data.dll中附加信息:指定的方法不是 支撑。
我在我的command.ExecuteReader()
类的所有方法和属性上放了一个断点:在我得到异常之前没有调用它们所以它可能与CustomDbDataReader
编辑:这是堆栈跟踪,按要求:
DbDataReader
答案 0 :(得分:3)