Pobieranie i zapytanie zachowują się inaczej, jeśli używasz ich w ramach transakcji. Miałem przypadek użycia, w którym potrzebowałem zaktualizować kilka tabel w jednej transakcji, ale musiałem pobrać niektóre dane z tabeli referencyjnej w środku sekwencji.
Kiedy pobierane dane z kwerendy i kolejnych wkładek lub aktualizacje nie powiodło się z InvalidOperationException: „Nie ma już otwartą DataReader skojarzony z tym poleceniem, które muszą być zamknięte pierwszy”
Rozwiązaniem było wymienić Query z Fetchiem i udało mi się ukończyć sekwencję.
pseudokod na to:
BeginTransaction Update Tbl1 Update Tbl2 Query RefTblA ## Changed Query to Fetch to avoid: '...already an open DataReader..." exception Update Tbl3 using data from RefTblA CompleteTransaction
A jak jest powiązany z serwerem sql? Sprawdź dokumentację petapoco. – TomTom