Quando modellate entità di dominio più grandi avrete probabilmente un qualche tipo di relazione tra queste entità. Queste relazioni di solito si traducono in entità che fanno riferimento a entità diverse. Se non sbaglio, ci sono due modi per modellare queste relazioni:
- Aggregazione (A utilizza B)
- Composizione (A possiede B)
Durante la modellazione di Composizione, l'entità radice gestisce la durata delle sue entità composte. Ciò vale anche per la persistenza, in cui è necessario ripulire le entità composte, quando l'entità root viene cancellata.
Ciò di cui sto avendo problemi è lo stesso scenario, usando semplicemente Aggregation. Come modellate la relazione tra entità, quando possono esistere indipendentemente e la stessa entità può essere aggregata da più entità radice? Ciò diventa ancora più complicato quando si suppone che entrambe le entità siano salvate in un database.
Adottare questi requisiti, ad esempio:
We want to model recipes, which consist of different ingredients and their quantities. Recipes and ingredients can be provided with additional information, like descriptions, pictures and user comments. Ingredients can also be provided with links to substitute ingredients and recipes to make the ingredients (bread can be made using a recipe for example).
Vorrei iniziare separando le diverse entità di dominio, specificate dai requisiti e aggiungendo i campi di proprietà delle entità (composizione). Sarebbero informazioni come commenti, immagini e descrizioni. Ma non so come modellare correttamente l'aggregazione tra le entità, in modo che la gestione indipendente abbia senso e posso facilmente integrarla nel mio Data Access Layer (database).
Potresti fornirmi un esempio di codice breve che dimostra come dovrei modellare la relazione tra Recipe
e Ingredient
, in modo che io possa usarlo facilmente nella mia applicazione e non abbia un incubo nel mio codice di persistenza ? Usa la tua lingua preferita!