现在我有以下用于在表格中添加或更新单个元素的C#/ T-SQL代码
public async Task AddOrUpdateAnswer ( AnswerSubmission Answer )
{
await this._Conn.OpenAsync();
using (SqlCommand cmd = new SqlCommand("AddOrUpdateAnswer", this._Conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@AnswerVal", Answer.AnswerVal);
cmd.Parameters.AddWithValue("@QuestionId", Answer.QuestionId);
cmd.Parameters.AddWithValue("@PartnerId", Answer.PartnerId);
await cmd.ExecuteNonQueryAsync();
}
this._Conn.Close();
}
CREATE PROCEDURE AddOrUpdateAnswer
@AnswerVal INT,
@QuestionId INT,
@PartnerId UNIQUEIDENTIFIER
AS
BEGIN
SET NOCOUNT ON
IF EXISTS ( SELECT 1 FROM Answers WHERE question_id=@QuestionId AND partner_id=@PartnerId )
UPDATE Answers SET val=@AnswerVal WHERE question_id=@QuestionId AND partner_id=@PartnerId
ELSE
INSERT INTO Answers (question_id,partner_id,val) VALUES (@QuestionId, @PartnerId, @AnswerVal)
END
这是我用来在填写的在线表单中自动保存信息的方法。但我还想要一个我在页面卸载时调用的过程,通过在单个HTTP请求中将它们全部发送到服务器并在数据库中更新它们来更新页面上的所有答案(以防错过单个更新) 。
那么,我如何将此更改为执行相同操作的方法,除了List<AnswerSubmission>
和单个存储过程(当然我仍然可以进行单独的答案更新 - 我只是做List<AnswerSubmission>
包含1个元素的那些)???我可以通过&#34;表&#34;到cmd
?