Patrón de repositorio: ¿Una clase de repositorio para cada entidad?

Supongamos que tiene las siguientes entidades definidas en una clase LINQ:

Product
Customer
Category

¿Debo tener una clase de repositorio para todos:

StoreRepository

... o debería tener:

ProductRepository
CustomerRepository
CategoryRepository

¿Cuáles son los pros y los contras de cada uno? En mi caso, tengo varias "aplicaciones" dentro de mi solución ... la aplicación Store es solo una de ellas.

Respuestas a la pregunta(4)

Su respuesta a la pregunta