Oto scenariusz:Najpierw kod EF: Jak usunąć wiersz z kolekcji jednostki, gdy podążasz za DDD?
DDD stwierdza, że używasz repozytorium, aby uzyskać zagregowany katalog główny, a następnie użyć go do dodania/usunięcia do wszystkich posiadanych kolekcji.
Dodawanie jest proste, wystarczy zadzwonić pod numer .Add(Item item)
na Collection
, do którego chcesz dodać. Nowy wiersz zostanie dodany do bazy danych po zapisaniu. Jednak usuwanie jest inne - wywołanie .Remove(Item item)
nie usuwa pozycji z bazy danych, po prostu usuwa klucz obcy. Tak więc, chociaż tak, to technicznie nie jest już częścią kolekcji, wciąż jest w bazie danych.
Jedynym rozwiązaniem jest usunięcie go przy użyciu kontekstu danych. Ale zgodnie z DDD obiekt domeny nie powinien być świadomy kontekstu danych, dlatego usuwanie będzie musiało być wykonane poza domeną.
Jaki jest właściwy sposób postępowania w tej sprawie? Lub Czy pozostawiają bazę danych pełną sierot akceptowalną (być może wykonując rutynę, aby je usunąć)?
Fantastyczny, na miejscu na – highace
Kiedy dokładnie wzniesiesz wydarzenie usunięcia? –
Z metody w obiekcie domeny powodującej usunięcie - zaktualizowałem odpowiedź. –