Ho appena dovuto sostituire un ORM ed è stato un compito relativamente scoraggiante, perché la logica della query perdeva dappertutto. Se avessi mai dovuto sviluppare una nuova applicazione, la mia preferenza personale sarebbe stata quella di incapsulare tutta la logica della query (usando un ORM) per renderlo a prova di futuro per il cambiamento. Il modello del repository è abbastanza problematico da codificare e mantenere, quindi mi chiedevo se ci sono altri modelli per risolvere il problema?
Posso prevedere post su come non aggiungere ulteriore complessità prima che sia effettivamente necessario, essere agili ecc., Ma sono interessato solo ai modelli esistenti che risolvono un problema simile in un modo più semplice.
Il mio primo pensiero è stato quello di avere un repository di tipo generico, al quale aggiungo i metodi necessari a specifiche classi di repository di tipo tramite metodi di estensione, ma test di unità su metodi statici è terribilmente doloroso. IE:
public static class PersonExtensions
{
public static IEnumerable<Person> GetRetiredPeople(this IRepository<Person> personRep)
{
// logic
}
}