Come gestire le query che non restituiscono entità complete in Domain Driven Design?

5

Nella mia domanda, ho un elenco di informazioni che viene detratto da una query che combina le informazioni di diverse entità. Di per sé, una situazione molto comune.

Ora, il metodo di repository corrispondente dovrebbe restituire un elenco che contiene elementi di un tipo appropriato. Chiaramente, la scelta di un'entità non è appropriata perché le informazioni che trattiamo si estendono su più entità. Suppongo che lo stesso si applichi quando si interrogano entità parziali. La creazione di una nuova entità non ha senso perché potrebbe solo confondere il modello.

Stavo pensando a qualcosa di simile alla creazione di un DTO nel livello applicazione perché la particolare query è davvero lì per soddisfare un requisito applicativo e non un requisito aziendale.

Questo porta essenzialmente a introdurre la nozione di repository specifici dell'applicazione e una dipendenza dal livello applicazione da quei repository specifici.

In qualche modo questo non sembra giusto. C'è un approccio / schema più appropriato che potrei usare qui?

    
posta Sandor Drieënhuizen 01.03.2011 - 10:57
fonte

1 risposta

8

Questa è una situazione di sola lettura? Perché è così che sembra.

Se stai facendo DDD, allora ogni volta che devi aggiornare / creare qualcosa nella tua app, passerai attraverso il modello di dominio perché questo conterrà tutta la tua logica e validazione aziendale.

Tuttavia, ci sono momenti nell'applicazione quando si desidera aggregare insieme un gruppo di dati da visualizzare a un utente in modalità di sola lettura. In questo caso, esponendo i dati attraverso un DTO tramite un livello di servizio mi sembra perfettamente accettabile.

Non lo farei però nel livello dell'applicazione. Lo esporrò come facciata di servizio intorno ai miei repository. Lascia che la facciata affronti chiamando i respositori, aggregando i dati e generando il DTO. Dal punto di vista dell'applicazione, è solo ottenere dati con una chiamata a un servizio. Nulla di bello.

    
risposta data 01.03.2011 - 20:43
fonte

Leggi altre domande sui tag