Domanda

Dato che non ci sono più non respository per gli oggetti di valore. Come faccio a caricare tutti gli oggetti di valore?

Supponiamo che stiamo modellando un'applicazione blog e abbiamo questa classi:

  • Inserisci (Entity)
  • Commento (oggetto Value)
  • Tag (oggetto Value)
  • PostsRespository (Respository)

So che quando salvo un nuovo post, relativi tag vengono salvati con esso nella stessa tabella. Ma come potevo caricare tutti i tag di tutti i messaggi. Nel caso PostsRespository avere un metodo per caricare tutti i tag? Io di solito lo faccio, ma io voglio sapere opinioni altrui

È stato utile?

Soluzione

Sto cercando una soluzione migliore per questa domanda e ho trovato questo post:

http: // Gojko .net / 2009/09/30 / ddd-e-relazionali-database-il-valore-oggetto-dilemma /

Questo post spiega molto bene perché c'è un sacco di confusione con oggetti di valore e database. Qui si è frase che mi è piaciuto più di tanto:

  • " La persistenza non è una scusa per girare tutto per entità. "

Gojko Adzic, ci danno tre alternative per salvare i nostri oggetti di valore.

Altri suggerimenti

Al momento sto lavorando attraverso un esempio simile. Una volta che è necessario fare riferimento unicamente ai tag sono senza tempo degli oggetti di valore semplice e possono continuare a crescere in complessità. Ho deciso di farle proprie entità e creare un archivio separato per recuperarli. Nella maggior parte degli scenari vengono caricati o salvati con il post, ma quando sono tenuti solo viene utilizzato l'altro repository.

Spero che questo aiuta.

EDIT: In parte grazie a questo post ho deciso di ristrutturare un po 'la mia domanda. Hai ragione che probabilmente è stato erroneamente facendo tag un'entità. Da allora ho cambiato la mia applicazione in modo che i tag sono solo stringhe e il repository posta gestisce tutti i requisiti di archiviazione intorno tag. Per le operazioni che hanno bisogno di messaggi i tag vengono caricati con loro. Per qualsiasi operazione che richiede solo tag o elenchi di tag repository dispone di metodi per farlo.

Ecco il mio prendere nel modo in cui avrei potuto risolvere questo tipo di problema nel modo in cui sto attualmente esercitano DDD.

Se si modifica qualcosa che richiede tag per essere aggiunti e rimossi da come ad esempio un messaggio allora tag possono essere entità, ma forse potrebbero essere oggetti di valore e vengono caricati e salvati insieme con il post in entrambi i casi. Io personalmente tendo a favorire gli oggetti di valore a meno che non deve essere modificato l'oggetto, ma mi rendo conto che c'è una differenza tra oggetto entità modellato come solo "istantanee" leggi e oggetti reali valori non identificabili. La parte difficile è che forse a volte quello che normalmente pensare a come chiave potrebbe essere parte di un oggetto di valore fino a quando non viene utilizzato come identità in quel contesto e credo che i tag rientrano in questa categoria.

Se si sta modificando i tag stessi, allora è probabilmente un contesto limitato separato o almeno un aggregato separato in cui i tag sono essi stessi sono la radice di aggregazione e persistito attraverso un repository. Si noti che la classe di entità che rappresenta i tag, in questo contesto non deve essere la stessa classe di entità per i tag utilizzati in post aggregata.

Se la tua scheda tag disponibili sul display per lettura scopi solo come ad esempio quello di fornire un elenco di selezione, allora questo è probabilmente un elenco di oggetti di valore. Questi oggetti di valore possono, ma non devono essere nel Modello di Dominio dal momento che sono principalmente di sostenere l'interfaccia utente e non per il dominio effettivo.

Si prega di carillon se qualcuno ha qualche idea sul perché il mio prendere su questo potrebbe essere sbagliato, ma questo è il modo che ho fatto esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top