C# Database.SqlQuery提供了另一个SqlParameterCollection已包含的SqlParameter

C# Database.SqlQuery提供了另一个SqlParameterCollection已包含的SqlParameter,c#,sql,asynchronous,C#,Sql,Asynchronous,我为异步调用我的查询创建了一个helper方法,并添加了一个5的重试计数器以防万一。它在大多数情况下都能正常工作,但我仍能通过以下方式获得所有5次尝试: SqlParameter已包含在另一个 SqlParameterCollection 我从几个地方调用它,期望有一个项目或一个项目列表,最多有一个或两个参数 我的代码 public static Object GetQueryResult(List<SqlParameter> parameters, Type dataType, s

我为异步调用我的查询创建了一个helper方法,并添加了一个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;
}

它是Linq To SQL,不是吗?LnsContext.Database是System.Data.Entity.Database,如果这是您的意思的话。这是带有mysql的c。因为我在迭代,所以在再次调用它之前,我只是克隆了参数,结果成功了