Uso Entity Framework. Diciamo che ho una query linq davvero complessa, che mi serve in più parti della mia applicazione, alcuni servizi, alcuni controller.
C'è qualche schema di progettazione che dovrei seguire?
Per prima cosa ho pensato che il Pattern del Repository sarebbe stato perfettamente valido:
MyDto myRepository.GetDataFromComplexQuery();
Ma non dovremmo usare Schema del repository con Entity Framework . La risposta nella domanda collegata sta invece parlando dell'utilizzo dei Servizi. Tuttavia, non voglio far bollire le mie classi di servizio con molte (duplicate) logiche di query complesse.
Quindi mi chiedo come dovrei progettarlo e come organizzarlo nella soluzione?
Qualcosa di simile a questo sembra molto sbagliato:
namespace Foo.Data.DataHelpers
{
public class ComplexQuery
{
private DbContext _ctx;
public ComplexQuery(DbContext ctx)
{
_ctx = ctx;
}
public MyDto GetData()
{
query = //...
return query.Single();
}
}
}
Anche a volte la query è complessa e deve essere sostituita dal semplice vecchio SQL per motivi di prestazioni. Ma non penso, questo cambierebbe la risposta?