Ошибка: "There is already an open DataReader associated with this Connection which must be closed first."
У меня два класса репозитория, у которых есть следующие методы GetAll:
public IEnumerable<Passport> GetAll()
{
List<Passport> passwords = new List<Passport>();
using (MySqlConnection connection = Connection.GetConnection())
{
MySqlCommand command = new MySqlCommand("SELECT * FROM Passports;", connection);
MySqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
int id = reader.GetInt32(0);
string series = reader.GetString(1);
int number = reader.GetInt32(2);
passwords.Add(new Passport(id, series, number));
}
}
}
return passwords;
}
public IEnumerable<Client> GetAll()
{
List<Client> clients = new List<Client>();
using (MySqlConnection connection = Connection.GetConnection())
{
MySqlCommand command = new MySqlCommand("SELECT * FROM Clients;", connection);
connection.Open();
MySqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
int id = reader.GetInt32(0);
string surname = reader.GetString(1);
string name = reader.GetString(2);
string middlename = reader.GetString(3);
int passportId = reader.GetInt32(4);
PassportRepository passportRepository = new PassportRepository();
Passport passport = passportRepository.GetById(passportId);
clients.Add(new Client(id, name, surname, middlename, passport));
}
}
}
return clients;
}
При попытке вызова метода GetById (по сути он вызывает GetAll и ищет элемент по полю Id), я получаю ошибку "There is already an open DataReader associated with this Connection which must be closed first." при попытке создать reader MySqlDataReader reader = command.ExecuteReader();
.
Я понимаю, что не могу вызвать reader на соединения на который уже вызван reader, как я могу получить информацию из бд через метод GetAll у passportRepository, при этом не отказываясь от DataReader?