Я написал этот метод, чтобы мне не приходилось каждый раз писать код открытия соединения и т.д.
public static bool TryExecuteReader(string commandText,string functionNameForLogging, string errorText, out SqlDataReader dataReader)
{
bool success = false;
dataReader = null;
try
{
using (SqlConnection sqlConnection = SqlUtilities.CreateSqlConnection())
{
sqlConnection.Open();
SqlCommand sqlCommand = sqlConnection.CreateCommand();
sqlCommand.CommandText = commandText;
dataReader = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
success = true;
}
catch (Exception ex)
{
SqlUtilities.LogError(functionNameForLogging,ex.Message,-1);
}
return success;
}
Я думал, что это должно работать нормально, но в последнее время я получаю сообщение об ошибке «Неверная попытка вызвать метаданные, когда читатель закрыт». Теперь я не уверен, почему эта ошибка происходит. Но это казалось наиболее вероятной причиной. Прошло некоторое время, поэтому я не могу точно сказать, вызвана ли ошибка таким образом. остается ли считыватель данных нулевым после завершения использования блока?