2010-07-26 17 views
5

Sto provando EF 4.0.I avere un oggetto Employee e EF Mi è toccato l'ObjectSet dipendenti semplicemente chiamandoOttenere oggetti da un ObjectSet specificando un intervallo in EF

Context.Employees

Ora il sopra utilizzando chiamata sarà sputare seguente query SQL select * from Employees

la query sopra funziona benissimo e non ho alcuna lamentela su di esso tuttavia, come sapete questo non sarà sufficiente performante se si dispone di alcuni milioni di record nella tabella e sarà sicuramente influenzare la performance.

Quindi, sto cercando di capire un modo per assegnare un intervallo al mio ObjectSet in cui posso dire qualcosa come ottenere record da 30 a 60 da Employee ObjectSet.

C'è un modo per fare qualcosa di simile.

Qualsiasi suggerimento sarà profondamente apprezzato.

Aggiornamento: Sto cercando di fare questo per ottenere indietro 20 dipendenti (dimensione della pagina) in base all'indice della pagina.

Grazie in anticipo. NiK ...

risposta

4

Ok, ho finalmente trovato un modo per farlo, che penso sia abbastanza decente. Ed ecco quello che ho fatto.

Ho usato i metodi Salta e Porta in IQueryable per saltare e prendere gli oggetti in base all'indice della pagina.

così ho usato il seguente codice:

var empList = context.Employees.OrderBy("it.CreatedDate").Skip(pageIndex * 20 - 20).Take(20); 

Questo è un modo.

Se qualcuno ritiene che questa non sia una buona soluzione, siete più che benvenuti a inventare qualcos'altro che posso sostituire con.

Aggiornato Codice Come da suggerimento di Yury Tarabanko ho cambiato il mio codice come segue:

var empList = context.Employees.OrderBy(x=>x.CreatedDate).Skip(pageIndex * 20 - 20).Take(20); 

Grazie per coloro che hanno trovato il tempo di leggere la mia domanda.

Thnq, nik ...

+0

Tra l'altro, è possibile utilizzare 'OrderBy (e => e.CreatedDate)' per evitare 'stringhe magici'. –

+0

Grazie mille Yury. – NiK

+0

huhu funziona. Grazie per la risposta. – user153410

Problemi correlati