我做了一个帮助方法来在异步中调用我的查询,我添加了一个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;
}