我收到此错误,但如果可能的话,我不知道如何清除命令对象。我在StackOverflow上找到并且在这里使用2个不同参数变量的想法仍然粘在第一个执行命令上。更糟糕的是,我认为我可以通过调用两个函数将这个ActionResult分成两半,每个函数都有自己的.ExecuteStoreCommand。除非有人知道如何清除EF中的参数? 在ADO.NET中,它更简单:Command.Paramters.Clear()
System.ArgumentException:SqlParameter已包含在另一个SqlParameterCollection中。
var @ThisBatch= new System.Data.SqlClient.SqlParameter("ThisBatch",System.Data.SqlDbType.VarChar,3,"BactiBatchID");
@ThisBatch.Value= Session["ThisBatch"];
var sql ="UPDATE dbo.BactiBatches SET BatchStatus = 'C' WHERE BactiBatchID= @ThisBatch";
_db.ExecuteStoreCommand(sql, ThisBatch);
var @ThisBatch2 = new System.Data.SqlClient.SqlParameter("ThisBatch2", System.Data.SqlDbType.VarChar, 3, "Batch_ID");
@ThisBatch2.Value = Session["ThisBatch"];
sql = "";
sql = "UPDATE dbo.BactiBucket SET RecvDate = GetDate() WHERE Batch_ID= @ThisBatch2";
_db.ExecuteStoreCommand(sql, ThisBatch);
return RedirectToAction("AddColiform");
编辑/更新: 好的,我能够这样做。不确定是否有更好的答案,所以我会在回答我自己的问题之前等待:
_db.ExecuteStoreCommand("UPDATE dbo.BactiBatches SET BatchStatus = 'C' WHERE BactiBatchID= {0}", Session["ThisBatch"]);
_db.ExecuteStoreCommand("UPDATE dbo.BactiBucket SET RecvDate = GetDate() WHERE Batch_ID={0}", Session["ThisBatch"]);
Session["ThisBatch"] = 0;
答案 0 :(得分:1)
请参阅第二个更新命令
var @ThisBatch2 = new System.Data.SqlClient.SqlParameter("ThisBatch2", System.Data.SqlDbType.VarChar, 3, "Batch_ID");
@ThisBatch2.Value = Session["ThisBatch"];
sql = "";
sql = "UPDATE dbo.BactiBucket SET RecvDate = GetDate() WHERE Batch_ID= @ThisBatch2";
_db.ExecuteStoreCommand(sql, ThisBatch);
我认为您确实希望使用ThisBatch2
代替ThisBatch
作为_db.ExecuteStoreCommand
方法的第二个参数,因此请将其更改为ThisBatch2
。
var @ThisBatch2 = new System.Data.SqlClient.SqlParameter("ThisBatch2", System.Data.SqlDbType.VarChar, 3, "Batch_ID");
@ThisBatch2.Value = Session["ThisBatch"];
sql = "";
sql = "UPDATE dbo.BactiBucket SET RecvDate = GetDate() WHERE Batch_ID= @ThisBatch2";
_db.ExecuteStoreCommand(sql, ThisBatch2);