Saltar al contenido

¿Cómo funciona la sintaxis de expresiones LINQ con include() para una carga ansiosa?

Este escrito ha sido probado por nuestros expertos para asegurar la veracidad de nuestro tutorial.

Solución:

Lo descubrí, gracias por las sugerencias de todos modos. La solución es hacer esto (segundo intento en mi pregunta):

var qry = (from a in Actions
join u in Users on a.UserId equals u.UserId    
select a).Include("User")

La razón por la que intellisense no mostró Incluir después de la consulta fue porque necesitaba el siguiente uso:

using System.Data.Entity;

Todo funcionó bien haciendo esto.

Mejor, código amigable para refactorizar (EF6)

using System.Data.Entity;
[...]
var x = (from cart in context.ShoppingCarts
         where table.id == 123
         select cart).Include(t => t.CartItems);

o

var x = from cart in context.ShoppingCarts.Include(nameof(ShoppingCart.CartItems))
        where table.id == 123
        select cart;

Actualización 31/03/2017

También puede usar include en la sintaxis lambda para cualquier método:

var x = from cart in context.ShoppingCarts.Include(p => p.ShoppingCart.CartItems))
        where table.id == 123
        select cart;

Si lo que quieres es una consulta que te devuelva todo Action entidades cuyos asociados User entidad realmente existe a través de la Action.UserId extranjero key propiedad, esto lo hará:

var results = context.Actions
    .Include("User")
    .Where(action =>
        context.Users.Any(user =>
            user.UserId == action.UserId));

Sin embargo no tienes que usar extranjero key propiedades con el fin de hacer el filtrado, ya que también tienes propiedades de navegación. Por lo tanto, su consulta se puede simplificar filtrando en el Action.User propiedad de navegación en su lugar, como en este ejemplo:

var results = context.Actions
    .Include("User")
    .Where(action => action.User != null);

Si su modelo establece que el Action.User la propiedad nunca puede ser null (es decir, el Action.UserId extranjero key no es anulable en la base de datos) y lo que quiere es en realidad todo Action entidades con sus asociados Usersentonces la consulta se vuelve aún más simple

var results = context.Actions.Include("User");

Recuerda que puedes dar visibilidad a este enunciado si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *