SQL データベースへの複数の更新を処理する方法を見つけるのが好きです (単一のデータベース往復で)。SQL Server 2008 http://www.codeproject.com/KB/database/TableValueParameters.aspxのテーブル値パラメーターについて読みましたが、これは本当に便利だと思われます。しかし、それを使用するには、ストアド プロシージャとテーブル型の両方を作成する必要があるようです。本当?おそらくセキュリティのためでしょうか?次のように単純にテキストクエリを実行したいと思います。
var sql = "INSERT INTO Note (UserId, note) SELECT * FROM @myDataTable";
var myDataTable = ... some System.Data.DataTable ...
var cmd = new System.Data.SqlClient.SqlCommand(sql, conn);
var param = cmd.Parameters.Add("@myDataTable", System.Data.SqlDbType.Structured);
param.Value=myDataTable;
cmd.ExecuteNonQuery();
そう
A) TVP を使用するには、ストアド プロシージャとテーブル タイプの両方を作成する必要がありますか?
B) SQL Server に複数の更新 (および挿入) を送信するために推奨される代替方法は何ですか?