Pergunta

Caso o modelo que será passado para a visão ser completamente definida por uma única chamada para um único repositório. Em outras palavras, é o modelo de um único agregado, ou deveria meu modelo ser construído a partir de Agregados separados, cada um com seu próprio repositório, na camada de serviço?

A maneira que eu tê-lo agora, é que eu simplesmente chamar um único repositório para preencher todo o modelo que é então apresentado por View. Parece Agregados, repositórios e modelos estão todos tornando-se o mesmo conceito.

Foi útil?

Solução

O meu que é para "Nenhuma das opções acima." Eu prefiro usar modelos de apresentação de pontos de vista, e modelos de apresentação não precisa de um repositório. Há uma variedade de razões para isso:

  • Usando modelos de apresentação permite que você crie pontos de vista e os controladores antes de projetar o modelo e banco de dados. Então você pode obter a entrada do usuário no início.
  • modelos de apresentação permitem que você passe um modelo bastante "flat" para a vista, assim você não precisa se preocupar com as preocupações ORM tais como o carregamento lento.
  • vinculativo modelos de apresentação modelo muitas vezes simplificar.
  • Ao utilizar um modelo de apresentação, você não precisa se preocupar com campos acidentalmente retornando um determinado usuário não devem ser autorizados a ver, ou campos acidentalmente atualização que o usuário não devem ser autorizados a atualização, porque você não obter uma lista branca correta.

Agora, mais especificamente seguindo a linha de sua pergunta: você tem construir uma instância do modelo de apresentação? Quantos repositórios são necessários? Bem, esta pergunta agora quase responde a si mesma. Você projeta o modelo de apresentação de seguir os requisitos da vista. Você projeta os repositórios seguintes boas práticas de TDD, incluindo a identificação de raízes agregadas. Agora, a questão de "quantos repositórios que eu preciso para instanciar este modelo" é simples. Você examinar as raízes agregados requeridos pelo modelo, e usar o que você precisa. Geralmente, eu posso fazer isso em uma única consulta LINQ.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top