Czym się różni Repository od UnitOfWork

0

Jak w temacie czym się różni Repository od UnitOfWork w .net core

1

Tym samym co w .NET 4.5.1

0

https://martinfowler.com/eaaCatalog/unitOfWork.html

W kontekście .NET Unit od Work to m.in. DbContext w EF czy ISession w NHibernate.

1

Konkretnie w .net core to nie wiem ale w ogolnosci to UOW jest agregatorem repozytoriow.
Np. masz UserRepository ale juz (ogolne) UOW, ktore ma wglad w cala baze danych.

2

Unit Of Work jest z tego co wiem biznesowa transakcja, zaś Repository to warstwa abstrakcji związana z persystencją. Np.
W przypadku przelewu bankowego repozytory sluzy do zapisu zmiany konta bankowego np. w bazie danych, a UnitOfWork obejmuje biznesowa tranzakcje pobrania środków z jednego konta i dodania ich do drugiego.

7

To pytanie brzmi trochę jak: czym się różni bagażnik od podróży samochodem?

Repozytorium to abstrakcja nad warstwę dostępu dodanych dostarczająca interfejsu przypominającego kolekcję i pozwalająca na pobieranie/zapisywanie/usuwanie obiektów.
Unit of work to transakcja biznesowa tudzież przypadek użycia, czyli potencjalnie zestaw wielu operacji, które kończą się albo sukcesem albo jego brakiem. Na przykład: pobranie danych o zamówieniu, sprawdzenie dostępności produktów, przeprowadzenie procesu płatności, wysłanie danych o zamówieniu do systemów księgowego oraz magazynowego. UoW może ale nie musi korzystać z repozytoriów.

2

@blane: na temat wątku piszemy w postach, komentarze są do offtopu.

UoW służy do tego aby operacje na wielu np. repozytoriach opakować w jedną transakcję, tak aby albo wszystkie razem zostały zatwierdzone albo odrzucone. Logiką składania obiektu z kilku tabelek też powinno zajmować się konkretne repozytorium.

A repozytorium niekoniecznie działa bezpośrednio na DB, bo pod spodem może mieć coś, co pozwoli zachować zestaw operacji do wykonania na bazie do momentu zatwierdzenia UoW. Repozytorium zachowuje się jak kolekcja obiektów, nie jak warstwa dostępu do danych.
Zresztą, można mieć repozytorium, a nie mieć DB. Źródłem danych może być równie dobrze inny webserwis albo pliki.

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