Eu apenas tive que mudar um ORM e foi uma tarefa relativamente assustadora, porque a lógica da consulta estava vazando por toda parte. Se eu tivesse que desenvolver um novo aplicativo, minha preferência pessoal seria encapsular toda a lógica de consulta (usando um ORM) para protegê-lo de alterações no futuro. Padrão de repositório é bastante problemático para codificar e manter, então eu queria saber se existem outros padrões para resolver o problema?
Posso prever postagens sobre não adicionar complexidade extra antes que seja realmente necessário, ser ágil etc., mas estou interessado apenas nos padrões existentes que resolvem um problema semelhante de uma maneira mais simples.
Meu primeiro pensamento foi ter um repositório de tipos genéricos, ao qual adiciono métodos conforme necessário a classes de repositórios de tipos específicos por meio de métodos de extensão, mas os métodos estáticos de teste de unidade são terrivelmente dolorosos. IE:
public static class PersonExtensions
{
public static IEnumerable<Person> GetRetiredPeople(this IRepository<Person> personRep)
{
// logic
}
}