Czy w każdej metodzie w serwisie muszę tworzyć nowy context?

0

Zastanawiam sie jak powinno sie to robic. Mam w serwisie metodę i w tej metodzie piszę var context = new MyDbContext i powiedzmy ze z tej metody wywołuje kolejna metodę w której tez potrzebuje context zeby wyjąć cos z bazy. Przekazać do tej metody context jako parameter? Czy stworzyć nowy context w tej metodzie?
Czy context wspólny dla dużej ilości metod w serwisie to dobry pomysl?

0

Każdy context niezależnie śledzi zmiany i przeprowadza na bazie niezależną transakcję. Jeśli będziesz miał różne konteksty w różnych metodach, to będziesz się dziwił, czemu dodałeś jakieś dane w jednej klasie, a w innej nie są one widoczne, albo czemu EF próbuje dwa razy zapisać do bazy ten sam obiekt.
W ogólności, jeden context powinien być wspólny dla wszystkich klas realizujących dany proces biznesowy (np. wystawienie faktury: pobranie obiektu Klienta, pobranie obiektów Produktów, utworzenie obiektu Faktury i listy jego Pozycji, zapisanie tego do bazy).
Mimo, że jest to jedyne działające rozwiązanie w przypadku korzystania z ORMa, to zostało uznane za wzorzec projektowy i nazywa się Unit of Work.

1 użytkowników online, w tym zalogowanych: 0, gości: 1