/ / Manipulácia s nevymazávajúcimi entitami v architektúre N-Tier - vzor úložiska, n-tier

Manipulácia s entitami, ktoré nemajú vymazanie, v architektúre N-Tier - repozitárny vzor, ​​n-tier

Aký je prístup osvedčených postupov k manipuláciivymazávanie subjektov v architektúre N-Tier. Daná architektúra má servisnú vrstvu a vrstvu úložiska. Úložisko je jedinou vrstvou, ktorá má priamy prístup do databázy (cez ORM). V súčasnosti sa vrstva úložiska zaoberá hlavne operáciami CRUD. Má táto vrstva spracovať získavanie entít na základe daného stavu?

Dovoľte mi vysvetliť použitie statusu v našom systéme. Na vymazanie entít chceme použiť status. Namiesto vymazania entity používateľa by sme nastavili jeho stav na hodnotu Vymazať. Teraz, User Repository vystavuje metódu Get. Volanie Get bez akýchkoľvek parametrov by malo vrátiť všetkých používateľov v systéme, bez ohľadu na jeho Stav, ale ak by sme chceli dostať iba Active Users, bolo by najlepšie, keby sme sa s tým vysporiadali vo vrstve Service, alebo vrstve Repository. Ak by sme to mali urobiť vo vrstve Service, potrebujeme prísť s filtrom na odpoveď Repository Get. Ak by sme to urobili vo vrstve Repository, dostali by sme Get get a Status enum, takže by ste mohli volať Get (Status.Active). Aký by bol najlepší spôsob, ako zvládnuť niečo také?

odpovede:

0 pre odpoveď č. 1

Navrhoval by som obmedziť Get (id) na načítaniePodrobnosti pre konkrétnu entitu a potom implementovať nejaký typ funkcie Find / Search, ktorá prijala objekt SearchCriteria na definovanie parametrov vyhľadávania (napríklad Status). Ak chcete odpovedať na vašu otázku o tom, kde robiť filter, navrhol by som databázu, pretože je optimalizovaný na vykonávanie dotazov.