Ho appena dovuto cambiare un ORM ed è stato un compito relativamente scoraggiante, perché la logica della query stava perdendo ovunque. Se mai avessi dovuto sviluppare una nuova applicazione, la mia preferenza personale sarebbe quella di incapsulare tutta la logica di query (usando un ORM) per renderlo disponibile per il futuro. Lo schema del repository è piuttosto fastidioso da codificare e mantenere quindi mi chiedevo se ci sono altri schemi per risolvere il problema?
Posso prevedere post su come non aggiungere complessità extra prima che sia effettivamente necessario, essere agile ecc., ma sono interessato solo ai pattern esistenti che risolvono un problema simile in un modo più semplice.
Il mio primo pensiero è stato quello di avere un repository di tipo generico, a cui aggiungo i metodi necessari per classi di repository di tipo specifico tramite metodi di estensione, ma i metodi statici di test unitario sono terribilmente dolorosi. IE:
public static class PersonExtensions
{
public static IEnumerable<Person> GetRetiredPeople(this IRepository<Person> personRep)
{
// logic
}
}