[WebServices] Repository и Unit of Work Pattern


7
Намерих една доста добра статия, която подробно описва идеята и имплментацията на двата патерна, които вървят ръка за ръка. Предполагам, че може да е полезна, да се осмисли по-добре Data слоя на приложението, и да се фокусираме само върху Service частта (Web API).
 
С едно изречение, Repository патерна ни разкача от работа с конкретен източник на данни, като така позволява и тестване. А Unit of Work е просто един клас, който държи репозиторита за различните entities, като им осигурява общ контекст, така че запазването на промените да става на едно място. Така промените в различните обекти става координирано, намаляват връзките към базата, и се осигурява консистентност на данните. При Иво и Ники този клас се казва Data. В примера от статията, UnitOfWork създава репозиторита без reflection, като така има малко повтаряне на код.
 



Отговори



1

Статията е интересна наистина.

По темата, аз имам една малко по-различна имплементация на репозиторито което работи като имплементира IQueryable<T>, вместо да използва метод All() който да прави същото и съответно работата се делегира на dbcontex-та в случая когато репозиторито е за EntityFramwork. Така като се правят заявките с линк не се налага да се минава през All() (не, че е голяма работа). Може и това което съм направил да е лоша практика и, ако е така моля кажете за да знам и да не го правя.

Извинявай, че съм използвал твоята тема, но като я видях се сетих за това.


от dimo.petrof (2887 точки)


6

Btw ви препоръчвам да разгледате и имплементацията на UoW и Repo патърните в OJS (a.k.a. BGCoder ) :) - https://github.com/NikolayIT/OpenJudgeSystem/tree/master/Open%20Judge%20System/Data/OJS.Data


от Teodor92 (13062 точки)