Jestem wykonawczych Repository Wzorzec korzystania ServiceStack.ORMLite tak:Transakcje w repozytorium Wzoru wykorzystujące ServiceStack.ORMLite
public class MyRepository : IMyRepository
{
private IDbConnectionFactory DbConnectionFactory = null;
public MyRepository(IDbConnectionFactory dbConnectionFactory)
{
DbConnectionFactory = dbConnectionFactory;
}
public void MyMethod()
{
using (var connection = DbConnectionFactory.OpenDbConnection())
using (var cmd = connection.CreateCommand())
{
//Do something here
}
}
}
Ale nie wiem, jak obsługiwać DbTransaction kiedy muszę trochę wypacza działanie DB w DbTransaction. Wygląda na to, że TransactionScope
jest rozwiązaniem, ale nie wiem, czy jest na to zbyt ciężki.
To moja wina, zadając złe pytanie ... Postaram się redfine moje pytanie ... –
Czy to dobrze, aby otworzyć IDbConnection tylko raz na żądanie i usuwane po użyciu? Pomyślałem, że powinienem otwórz połączenie na początku każdej metody i zamknij je, gdy metoda się zakończy. –
Jest w porządku, jeśli używasz puli połączeń (to jest domyślne zachowanie dla SqlServer), to połączenie tak naprawdę nie jest zamknięte, po prostu jest ponownie zwalniane do puli. Ale tak, to jest w porządku, aby używać zakresu wymagań, ponieważ jest jedno-wątkowe na żądanie, więc instancja połączenia może być bezpiecznie udostępniana innym zależnościom w tym samym zasięgu żądania. – mythz