0
私はオブジェクト(製品)のリストとその中の別のリスト(サイズ)を取得するために次のコードを使用しています。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
準備を実行すると、「操作が既に進行中です」というエラーが表示されます。
私はリーダーを閉じることで十分だと思って別のものを動かすことができました。
ANYONEにも同じ問題がありますか?
ありがとうございます。
準備完了を取り除き、ループの後で2番目のリーダーを閉じるようにしてください – Steve
問題は2番目の問題でした。エラーは実際にこのメソッドの2回目の実行でした.... Thanks Steve – Daniel
Postgresはわかりませんが、プロバイダがMultipleActiveResultSets = Trueをサポートしているかどうかを確認します。その場合、もう2つのループは必要なく、最初のリーダーにサービスを提供している間に接続を再利用することができます – Steve