Nach der Lektüre von Evans und Nilssons Büchern bin ich mir immer noch nicht sicher, wie der Datenzugriff in einem domänengesteuerten Projekt zu handhaben ist. Sollten die CRUD-Methoden Teil der Repositories sein, d.h. OrderRepository.GetOrdersByCustomer(customer) oder sollten sie Teil der Entitäten sein: Customer.GetOrders(). Der letztere Ansatz scheint OO-freundlicher zu sein, aber er verteilt den Datenzugriff für einen einzigen Entitätstyp auf mehrere Objekte, d. h. Customer.GetOrders(), Invoice.GetOrders(), ShipmentBatch.GetOrders() usw. Was ist mit Einfügen und Aktualisieren?
Ich dachte, dass in den Business-Klassen, injizieren Sie nicht das Repository, so dass die Domain-Klassen dones't care, wenn die Daten persist oder nicht, nur die Business-Logik zu tun ist. Aber wo ist dann der Code, der die Daten aus der Datenbank abruft und sie speichert? In einem Dienst der Geschäftslogik oder in einem Dienst in der Anwendungsschicht?