c# - 了解 'The SqlParameter is already contained by another SqlParameterCollection'

标签 c# asp.net sql-server stored-procedures

我有以下代码:

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/

相关文章:

c# - MonoTouch 对话框 StringElements 可变单元格高度

c# - 使用 C# 连接到 Microsoft Exchange Server

c# - 在 ASP.NET 中使用 SecureString 有什么好处吗?

jquery - ASP.NET MVC 4 不支持 jquery datepicker

sql - 数据库中每个表的最大值(ID)

sql - 添加列描述

SQL:在 SQL Server 2012 中使用外连接

c# - smallint转int的datarow字段扩展方法

C# 将二维数组转换为html表格

asp.net - 如何维护具有大量分支的 SQL Server DB