The SqlParameter is already contained by another SqlParameterCollection

public List<dbEntity.models.user> searchUser(string strUserCode,string strUserName,string strUserAccount) {
            using (dbEntity.dbEntity db = new dbEntity.dbEntity()) {
                object[] objParams = new object[3];
                objParams[0] = new SqlParameter() { ParameterName = "@usercode", Value = strUserCode ?? DBNull.Value.ToString() };
                objParams[1] = new SqlParameter() { ParameterName = "@username", Value = strUserName ?? DBNull.Value.ToString() };
                objParams[2] = new SqlParameter() { ParameterName = "@useraccount", Value = strUserAccount ?? DBNull.Value.ToString() };

                var vRes = db.Database.SqlQuery<dbEntity.models.user>("exec sp_searchUser @usercode,@username,@useraccount", objParams.Select(x => ((ICloneable)x).Clone()).ToArray());

//vRes其實并沒有真正的取數據


                return vRes.ToList();//ToList才真正的取到數據
            }
                
           
        }

1.第一次沒有使用using,所以理解的是ef中的sqlcommand  parameter資源沒有釋放,後來用using還是報相同的錯誤,

只好用((ICloneable)x).Clone()).ToArray() 將parameter暫時copy出來處理。

 

沒有搞明白具體的原因是什麼,先記錄一下。

 

參考:

https://stackoverflow.com/questions/30575555/getting-the-sqlparameter-is-already-contained-by-another-sqlparametercollection

https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlparameter.system-icloneable-clone?redirectedfrom=MSDN&view=netframework-4.7.2#System_Data_SqlClient_SqlParameter_System_ICloneable_Clone

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值