Я написал метод в моем database layer
, который будет использоваться другими верхними уровнями. Этот метод возвращает IDataReader
, как показано ниже:
public IDataReader GetDataReader(string commandText, CommandType commandType, IDbDataParameter[] parameters)
{
IDataReader reader = null;
using (var connection = _database.GetConnection()) //either opens new or uses existing connection if exist
{
using (var command = _database.GetCommand(commandText, connection, commandType))
{
{
if (parameters != null)
{
foreach (var parameter in parameters)
{
command.Parameters.Add(parameter);
}
}
reader = command.ExecuteReader();
return reader;
}
}
}
}
Теперь, когда я хочу использовать этот метод в другом месте, и когда он достигает значения while (reader.Read())
, он выдал мне ошибку.
private void GetResult()
{
var query = "SELECT * FROM MyTable";
var reader = Context.GetDataReader(query, CommandType.Text, null);
while (reader.Read())
{
//...
}
}
Ошибка:
'Invalid attempt to call Read when reader is closed.'
Что я могу сделать, чтобы исправить это?