Domanda

Nel caso del modello che verrà passato alla vista essere completamente definito da una singola chiamata a un unico repository. In altre parole, è il modello di un unico aggregato, o dovrebbe essere il mio modello essere costruito dagli aggregati separati, ognuno con il proprio repository, nel livello di servizio?

Il modo in cui l'ho ora, è che semplicemente chiamare un unico repository per riempire l'intero modello che viene poi presentato da View. Sembra Aggregati, Repository e modelli sono tutti diventando lo stesso concetto.

È stato utile?

Soluzione

Il mio che è per "Nessuno dei precedenti." Io preferisco usare modelli di presentazione per le viste, e modelli di presentazione non ho bisogno di un repository. Ci sono una serie di ragioni per questo:

  • Utilizzo di modelli di presentazione permette di progettare viste e controller prima di progettare il modello e il database. Così si può ottenere in anticipo l'input dell'utente.
  • modelli di presentazione permettono di passare un modello abbastanza "flat" per la vista, quindi non c'è bisogno di preoccuparsi di problemi ORM come il caricamento pigro.
  • modelli
  • Presentazione spesso semplificano modello vincolante.
  • Quando si utilizza un modello di presentazione, non è necessario preoccuparsi di accidentalmente campi restituzione di un certo utente non dovrebbe essere permesso di vedere, o l'aggiornamento accidentalmente campi che l'utente non dovrebbe essere consentito di aggiornare, in quanto non ha ottenuto una whitelist corretta.

Ora, più precisamente seguendo la linea della tua domanda: Avete costruire un'istanza del modello di presentazione? Quante repository sono necessari? Beh, questa domanda ormai quasi si risponde. Si progetta il modello di presentazione di seguire le esigenze della vista. Si progetta il repository seguenti buone pratiche TDD, compresa l'identificazione delle radici di aggregazione. Ora, la questione di "quante repository ho bisogno di creare un'istanza di questo modello" è diretto. Si esaminano le radici di aggregazione richiesti dal modello, e utilizzare quelle che ti servono. In generale, posso fare questo in una singola query LINQ.

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