我有以下代码:
SqlParameter invidParam = new SqlParameter("@invid",obj.INVID);
SqlParameter prodParam = new SqlParameter("@prod", obj.PROD);
SqlParameter descrParam = new SqlParameter("@descr", obj.DESCR);
SqlParameter qtyParam = new SqlParameter("@qty", 1);
if(SessionHelper.TryGetSession("curUser",out User user))
{
SqlParameter useridParamCheck = new SqlParameter("@userid", user.Username);
var queryResult = db.Database.SqlQuery<int>("EXEC CheckIfAlreadyInPR#invid#userid @invid, @userid", invidParam, useridParamCheck);
var qty = queryResult.FirstOrDefault();
if (qty == 0)
{
SqlParameter useridParamInsert = new SqlParameter("@userid", user.Username);
var insertResult = db.Database.ExecuteSqlCommand("InsertIntoPR @invid, @prod, @descr, @userid, @qty", invidParam, prodParam, descrParam, useridParamInsert, qtyParam);
}
else if (qty > 0)
{
SqlParameter qtyParameter = new SqlParameter("@newqty", (qty + 1));
SqlParameter userIdParamUpdate = new SqlParameter("@userid", user.Username);
var updateResult = db.Database.ExecuteSqlCommand("UpdatePRQty#invid#userid#newqty @invid,@userid,@newqty",invidParam,userIdParamUpdate,qtyParameter);
}
}
我的程序运行并在 var insertResult = db...
行遇到异常
我试图了解哪个 SqlParameter
已包含在另一个集合中。是因为参数@userid
已经在之前的存储过程调用中使用了吗?
我用不同的变量名称声明了 SqlParameter("@userid")
3 次:
useridParamCheck, useridParamInsert, userIdParamUpdate
是否因为使用了名称 @userid
而导致错误?如果我使用@userid1
、@userid2
、@userid3
,问题会解决吗?或者已经包含的SqlParameter
是我上面声明的其他一些SQL参数?
谢谢
最佳答案
我要建议 invidparam
是你的问题参数,因为它是我能看到的唯一被使用两次的参数。曾经在db.Database.SqlQuery<int>("EXEC CheckIfAlreadyInPR#invid#userid @invid, @userid", invidParam, useridParamCheck);
并在 db.Database.ExecuteCommand()
的两个实例中再次出现.
错误本身与 SqlParameter
有关对象被多次使用,而不是同一参数名称被多次使用。
关于c# - 了解 'The SqlParameter is already contained by another SqlParameterCollection',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51150215/