c#、.net 2.0、および SQLServer 2012 Express を使用して、DataTable をストアド プロシージャに送信しようとしています。
これはおおよそ私がやっていることです:
//define the DataTable
var accountIdTable = new DataTable("[dbo].[TypeAccountIdTable]");
//define the column
var dataColumn = new DataColumn {ColumnName = "[ID]", DataType = typeof (Guid)};
//add column to dataTable
accountIdTable.Columns.Add(dataColumn);
//feed it with the unique contact ids
foreach (var uniqueId in uniqueIds)
{
accountIdTable.Rows.Add(uniqueId);
}
using (var sqlCmd = new SqlCommand())
{
//define command details
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandText = "[dbo].[msp_Get_Many_Profiles]";
sqlCmd.Connection = dbConn; //an open database connection
//define parameter
var sqlParam = new SqlParameter();
sqlParam.ParameterName = "@tvp_account_id_list";
sqlParam.SqlDbType = SqlDbType.Structured;
sqlParam.Value = accountIdTable;
//add parameter to command
sqlCmd.Parameters.Add(sqlParam);
//execute procedure
rResult = sqlCmd.ExecuteReader();
//print results
while (rResult.Read())
{
PrintRowData(rResult);
}
}
しかし、次のエラーが表示されます。
ArgumentOutOfRangeException: No mapping exists from SqlDbType Structured to a known DbType.
Parameter name: SqlDbType
(MSDN、SO、およびその他の場所で) さらに調査すると、.net 2.0 がデータベースへの DataTable の送信をサポートしていないように見えます (などの欠落SqlParameter.TypeName
)。この機能は .net 2.0 では利用できないと主張している
これは本当ですか?
もしそうなら、データのコレクションをデータベースに送信する別の方法はありますか?
前もって感謝します!