Database.SqlQuery给出了另一个SqlParameterCollection已经包含的SqlParameter

时间:2015-07-02 13:38:31

标签: c# sql asynchronous

我做了一个帮助方法来在异步中调用我的查询,我添加了一个5的重试计数器以防万一。它大部分时间都有效,但我仍然可以完成所有5次尝试:

  

SqlParameter已被另一个人包含   SqlParameterCollection。

我从几个地方打电话给它,期待一个项目或一个项目列表,最多只有一个或两个参数。

我的代码

public static Object GetQueryResult(List<SqlParameter> parameters, Type dataType, string query, bool isList) {
    Object result = null;
    int retry = 0;
    while (result == null && retry < 5) {
        retry++;
        try {
            if (isList) {
                if (parameters.Count > 1)
                    result = lnssContext.Database.SqlQuery(dataType, query, parameters[0], parameters[1]).Cast<Object>().ToList();
                else
                    result = lnssContext.Database.SqlQuery(dataType, query, parameters[0]).Cast<Object>().ToList();
            } else {
                if (parameters.Count > 1)
                    result = lnssContext.Database.SqlQuery(dataType, query, parameters[0], parameters[1]).Cast<Object>().ToList().FirstOrDefault();
                else
                    result = lnssContext.Database.SqlQuery(dataType, query, parameters[0]).Cast<Object>().ToList().FirstOrDefault();
            }
        } catch (Exception e) {
            log.Info("Query failed . Retry count:" + retry, e);
            result = null;
        }
    }
    return result;
}

0 个答案:

没有答案