Niedawno zacząłem używać Dapper, wszystko wydaje się łatwe i przyjemne, ale jest jedna rzecz, która mnie dezorientuje: Zarządzanie połączeniami.Zarządzanie połączeniami z niepobudzonymi zapytaniami w Dapper
jak na documentation:
Wytworny nie zarządza cyklem Twojego połączenia do, to zakłada gra robi jest otwarta i nie ma żadnych istniejących datareaders wyliczający (chyba, że Mars jest włączona)
W związku z tym zacząłem robić to w ramach wdrażania moich metod repozytorium:
using (var db = new SqliteConnection(connectionString)) {
// call Dapper methods here
}
Potem natknąłem się na tabelę z dużą liczbą rekordów, więc zwróciłem IEnumerable<T>
przekazując buffered: false
do metody Query<>
, a kiedy zacząłem wyliczać wyliczalne w przednim końcu, bum wyjątek mówiąc, że połączenie zostało zamknięte i rozmieszczone, co jest oczekiwane, ponieważ owijam moje połączenia poprzednim blokiem.
Pytanie: Najlepszy sposób na rozwiązanie tego problemu?
Pytanie boczne: Czy sposób zarządzania połączeniem jest preferowanym sposobem postępowania?
Tylko w przypadku, to pomaga kogoś innego, kiedyś buforowane: false i skorygowane mój problem połączenia w/elegancki. – wintercyborg