Si tengo una entidad Blog con una colección BlogEntries que puede tener cientos de entradas, ¿hay alguna manera de agregar primero cualquier funcionalidad de paginación del lado del servidor con código EF? Por ejemplo, si hago un .Skip (x) .Take (y) típico como lo haría en un DbSet, ¿cargará perezosamente toda la colección y la colocará en la memoria?En el código de entidad de marco primero, ¿hay alguna manera de agregar paginación a las colecciones de navegación?
7
A
Respuesta
14
Si consulta directamente DbSet
puede usar Tomar y Omitir y de hecho ejecutará paginación en el servidor de la base de datos (estas llamadas a métodos se traducen a SQL). Así que esto funciona como se esperaba:
// Loads only 10 expected entries through Linq-to-entities
var entries = context.BlogEntries.OrderBy(e => e.Date).Skip(10).Take(10);
Tenga en cuenta que las propiedades de navegación de paginación en la entidad cargado no funciona de esta manera:
var blog = context.Blogs.First();
// Lazy loading always loads all related entries and executes ordering and
// paging through Linq-to-objects!
var entires = blog.BlogEntries.OrderBy(e => e.Date).Skip(10).Take(10);
Si desea obtener paginación en propiedad de navegación debe utilizar la carga explícita
var blog = context.Blogs.First();
var dbEntry = context.Entry(blog);
// This is the way to use Linq-to-entities on navigation property and
// load only subset of related entities
var entries = dbEntry.Collection(b => b.BlogEntries)
.Query()
.OrderBy(e => e.Date)
.Skip(10)
.Take(10)
.Load();
Cuestiones relacionadas
- 1. Agregar índice con el código de entidad de marco primero (CTP5)
- 2. Cómo actualizar las propiedades de navegación de la entidad en el marco de la entidad
- 3. Entidad marco 5.0 de código primero con MySQL en WPF
- 4. Uso de propiedades de navegación de código marco de la entidad primeros
- 5. Cadena de conexión de SQL Server 2008 para el código de entidad marco 4.1 primero
- 6. en el código de la entidad de código primero, cómo usar KeyAttribute en varias columnas
- 7. Agregar métodos a un modelo utilizando el marco de entidad
- 8. ¿Hay alguna manera de exportar código a HTML en Eclipse?
- 9. ¿Hay alguna manera de entrar en las funciones decoradas, omitiendo el código de decorador
- 10. En C#, ¿hay alguna manera de agregar un nodo XML a un archivo en el disco SIN cargarlo primero?
- 11. entidad Código Marco relaciones de primer nivel
- 12. EF 4.1, Código-Primero: Con ganas de carga de las colecciones en cascada
- 13. Especificación del código del marco de la entidad de clave externa Primero, Api fluido
- 14. Diseño RESTful: colecciones de paginación
- 15. Ejecutando sql en el marco de entidad?
- 16. Código EF4 Primero: cómo agregar una relación sin la adición de una propiedad de navegación
- 17. Procedimientos almacenados en el marco de entidad
- 18. ¿Hay alguna manera de incorporar el código python a las páginas moinmoin?
- 19. entidad marco 4.1 código primero permiso CREATE DATABASE denegado en la base de datos 'master'
- 20. ¿Existe alguna manera de extender las primeras migraciones de código?
- 21. no puede obtener la relación de actualizar las propiedades de navegación en el marco de la entidad
- 22. Android: ¿Hay alguna manera de mostrar DialogPreference desde el código?
- 23. Encriptar ConnectionString en el marco de entidad (primer código)
- 24. Al insertar una entidad con asociaciones, ¿hay alguna manera de simplemente usar el FK en lugar de recuperar la entidad?
- 25. ¿Hay alguna manera de que Ediff no abra su interfaz de navegación en una ventana externa?
- 26. ¿Hay alguna manera de agregar múltiples receptores en Python SMTPlib?
- 27. ¿Hay alguna manera de que pueda cambiar el orden de carga de Apache VirtualHosts primero?
- 28. código de entidad de entidad primero y usuario de base de datos
- 29. ¿Hay alguna manera de acelerar las compilaciones de WiX?
- 30. Cómo agregar el prefijo de tabla en el código de Entity Framework primero a nivel mundial?
Gracias! Me alegra que haya una puerta trasera para lograr esto con EF. Espero que en futuras versiones haya una manera de hacer esto incorporado así que no tenemos que ir al DbContext para lograr esto. ¿Sabes si lo hace .Count() y .Any() sin cargar la colección (usando select Count (1) y si existe en SQL) como lo hace NHibernate? – Jason
La propiedad de navegación siempre carga todas las entidades relacionadas aunque solo quiera contarlas. Para admitir 'Count' necesita [carga adicional] (http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/1050591-extra-lazy-loading). –
Si volvemos a llamar '.Load()' en el mismo contexto de datos para otro diferente, * agrega * la página siguiente a la colección en lugar de reemplazarla. ¿Hay alguna forma de evitar esto, además de crear un nuevo contexto de datos? – Cocowalla