私は現在、50 ほどの質問に回答と関連コンテンツ (メモなど) を追加するこの機能 (以下を参照) を持っています。ユーザーから書き込み権限を削除できるように、データベースをストアド プロシージャに変更してデータベースを安全にしようとしています。これは正しいアプローチですか?
テーブル値パラメーターを使用する必要がありますか? または、ストアド プロシージャを 50 回呼び出す必要がありますか? 前者は正しいように感じますが、後者は非効率だと思いますが、コードで見栄えがよくなりますか?
または...より良い方法/アプローチはありますか?
int AddAnswersToTable()
{
var Cmd = Db.NewCommand();
var Str = new StringBuilder("INSERT INTO answers (qu_id,answer,notes) VALUES");
int i = 1;
string Join = string.Empty;
foreach (var Qu in Page)
{
Str.Append(Join);
Str.Append("(");
Str.Append((Name = "@qu_id" + i) + ",");
Cmd.Parameters.AddWithValue(Name, Qu.QuId);
Str.Append((Name = "@ans" + i) + ",");
Cmd.Parameters.AddWithValue(Name, Qu.Answer.Truncate(499));
Str.Append((Name = "@notes" + i) + ",");
Cmd.Parameters.AddWithValue(Name, Qu.Notes.Truncate(499));
Str.Append(")");
Join = ",";
i++;
}
return Cmd.ExecuteNonQuery(Str.ToString());
}
前もって感謝します。