Voglio implementare il modello di repository in un vecchio progetto precedente.
Ho già fatto alcune ricerche e ho scoperto che, senza un ORM, è completamente accettabile avere metodi come "GetBySpecialProperty" e saltare la creazione di un repository generico.
La mia configurazione attuale è:
public class FooRepository
{
private IMapper<Foo> _fooMapper;
public FooRepository (IMapper<Foo> mapper)
{
_fooMapper = mapper;
}
public List<Foo> GetBySpecialProperty(int specialProperty)
{
var result = new List<Foo>();
//retrieve datareader
while (reader.Read()) result.Add(_fooMapper.Map(reader));
return result;
}
}
Il mio problema ora è:
Mi piacerebbe davvero avere un'interfaccia per questa classe ed essere in grado di iniettarla in business class (per testare e ridurre l'accoppiamento), ma è sbagliato avere un'interfaccia IFooRepository
solo per quel metodo.
Inoltre, non so davvero come creare una factory per i miei repository, poiché il chiamante dovrebbe conoscere i metodi speciali all'interno del repository che desidera.
PS: per accedere ai dati Attualmente sto usando OleDb e passare a un ORM non è un'opzione, poiché il resto del team non sa come usarli.