c# - 读取器在数据库层关闭时尝试调用读取无效
问题描述
我在 my 中编写了方法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;
}
}
}
}
现在,当我想在其他地方使用该方法时,当它到达时(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.'
我能做些什么来解决这个问题?