Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Carga explícita
Puede cargar de manera explícita una propiedad de navegación a través de la API DbContext.Entry(...)
.
using (var context = new BloggingContext())
{
var blog = await context.Blogs
.SingleAsync(b => b.BlogId == 1);
await context.Entry(blog)
.Collection(b => b.Posts)
.LoadAsync();
await context.Entry(blog)
.Reference(b => b.Owner)
.LoadAsync();
}
También puede cargar de manera explícita una propiedad de navegación si ejecuta una consulta independiente que devuelve las entidades relacionadas. Si está habilitado el seguimiento de cambios, cuando una consulta materializa una entidad, EF Core establece automáticamente las propiedades de navegación de la entidad recién cargada para hacer referencia a cualquier entidad ya cargada. También establece las propiedades de navegación de las entidades ya cargadas para hacer referencia a la entidad cargada recientemente.
Consulta de las entidades relacionadas
También puede obtener una consulta LINQ que represente el contenido de una propiedad de navegación.
Esto permite aplicar otros operadores en la consulta. Por ejemplo, aplicar un operador de agregado en las entidades relacionadas sin cargarlas en la memoria.
using (var context = new BloggingContext())
{
var blog = await context.Blogs
.SingleAsync(b => b.BlogId == 1);
var postCount = await context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.CountAsync();
}
También puede filtrar las entidades relacionadas que se cargan en la memoria.
using (var context = new BloggingContext())
{
var blog = await context.Blogs
.SingleAsync(b => b.BlogId == 1);
var goodPosts = await context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.Where(p => p.Rating > 3)
.ToListAsync();
}