Я использую следующий код для извлечения списка объектов (продуктов) и другого списка (размеров) внутри них.VB net и postgres: «Выполнение операции уже выполняется» с использованием npgsql
Dim l As New List(Of Entidades.producto)
Dim c As New NpgsqlCommand("select id, name from product", cn)
Dim r As NpgsqlDataReader = c.ExecuteReader
Do While r.Read
Dim p As New Entidades.product
p.ID = r.Item("id")
p.name = r.Item("name")
l.Add(p)
>>> I HAD THE OTHER LOOP HERE BUT HAVING THE SAME ISSUE TRIED TO PUT THE
READER OUTSIDE OF THIS LOOP.
Loop
r.Close()
For Each p In l
c = New NpgsqlCommand("select t.id id, t.name nombre from productsize pt join size t on t.id = pt.sizeid where productid = :productid order by ord", cn)
c.Parameters.AddWithValue("productid", pgsqlTypes.NpgsqlDbType.Integer, p.ID)
c.Prepare() <---- HERE I GET THE ERROR
Dim rt As NpgsqlDataReader = c.ExecuteReader
Do While rt.Read
Dim t As New size
t.ID = rt.Item("id")
t.nombre = rt.Item("name")
p.size.Add(t)
Loop
Next
Return l
И я получаю ошибку «Операция уже выполняется», когда я выполняю подготовку.
Я думал, что закрытие читателя было достаточно, чтобы я мог запустить другой.
У каждого была такая же проблема?
Спасибо i advance
Попробуйте удалить Подготовку и закройте второй считыватель после петли – Steve
Проблема была второй. Ошибка была фактически вторым выполнением этого метода .... Спасибо Steve – Daniel
Я не знаю Postgres, но я бы проверить, поддерживает ли провайдер параметр MultipleActiveResultSets = True в строке подключения. В этом случае вам больше не нужны две петли и вы можете повторно использовать соединение, пока оно служит первому читателю – Steve