Compilare una query LINQ to Entities in Entity Framework

di Stefano Mostarda, in LINQ, Entity Framework,

Compilare una query LINQ to Entities è un'operazione molto lenta. Per migliorare le cose possiamo effettuare la compilazione una volta sola e riutilizzare la versione compilata sfruttando il metodo statico Compile della classe CompiledQuery.

var compQuery = 
  CompiledQuery.Compile<OrderITEntities, string, IQueryable<Customer>>(
    (ctx, name) => ctx.Customers.Where(c => c.Name.StartsWith(name))
  );

Il metodo Compile accetta n parametri generici dove il primo è il tipo del contesto, l'ultimo è il tipo restituito dalla query e quelli in mezzo sono i parametri da passare alla query.

Per invocare la query compilata basta usare il metodo Invoke della variabile restituita dal metodo Compile.

var items = compQuery.Invoke(ctx, "Custo").ToList();

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi