Pergunta

Tem estado a olhar para a frente de loja MVC e ver que IQueryable é devolvido a partir das classes de repositório. Querendo saber se você não estiver usando LINQ faz isso faz sentido para retornar esse objeto? No caso de LINQ no faz sentido, porque de execução diferida, assim que adicionar a filtragem na camada de serviço faz sentido, mas se você não usar LINQ você gostaria de filtro no DB em muitos casos. Neste caso, seria eu apenas adicionar métodos que fazem a filtragem para o repositório? Se eu fizer, é a camada de serviço realmente útil?

Foi útil?

Solução

Os argumentos podem ser feitas de qualquer forma, ver este recente postagem de blog: Se meu repositório expor IQueryable?

Outras dicas

O material IQueryable que Rob Conery colocado no MVC Storefront é inovador, mas não significa que a norma quando se trata de criação de repositórios. Normalmente, um repositório é responsável por mapear seu domínio de e para o banco de dados. Retornando IQueryable realmente não executar qualquer mapeamento e conta com a camada de serviços para fazer isso. Isso tem suas vantagens e desvantagens, mas basta dizer que não é a única maneira de fazê-lo.

Você vai notar, porém, que os seus serviços acabar se tornando um pouco degradado por causa de todo o código duplicado. Por exemplo, se você quiser apenas para obter uma lista de todos os usuários em seu banco de dados você teria que definir essa função, tanto no repositório e a camada de serviço. Quando a camada de serviço brilha, porém, é quando são necessárias várias transações de / para o banco de dados para uma operação.

O problema que tenho com expondo IQueryable para a camada de serviço é que se você sempre quis envolver a camada de Repositório atrás de um Web Service sem quebrar o código de camada de serviço que você não podia, não é bem sem o uso de ADO.NET Data Services mas, em seguida, todo o seu código Repository seria, essencialmente, tornar-se redundante.

Enquanto eu acho que pode ser muito produtivo para pequenas aplicações, quando você começar a olhar para dimensionamento e distribuição ele faz mais mal do que bem.

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