2012-06-29 7 views
27

estoy usando marco de la entidad y no puedo encontrar la inclusión del método como en este ejemplo:No encuentro el método "Incluir" con la expresión lambda en Entity framework?

using(ArticleExtractorEntities db=new ArticleExtractorEntities()) 
{ 
    Preference pref= db.Preferences.Include( 

Aquí encuentro sólo la función de incluir con el parámetro (string path) y no encuentro ninguna otra sobrecarga Entonces, ¿cómo puedo usar Incluir con expresión lambda?

+1

Necesitas estar usando EF 4 **. 1 ** o posterior. Tenga en cuenta que lo que se envía con VS 2010 es EF 4, que * no * tiene esto. – AakashM

Respuesta

76

no está en System.Linq. Añadir

using System.Data.Entity 
+0

He agregado esto pero no funcionó –

+1

@ahmadhori ¿está en linq a entidades, o linq a sql? –

+0

Debe marcarse como una respuesta aceptada. –

1

podría implementar que as shown in this blog post:

public static class ObjectQueryExtension 
{ 
    public static ObjectQuery<T> Include<T>(this ObjectQuery<T> mainQuery, Expression<Func<T, object>> subSelector) 
    { 
     return mainQuery.Include(FuncToString(subSelector.Body)); 
    } 
    private static string FuncToString(Expression selector) 
    { 
     switch (selector.NodeType) 
     { 
      case ExpressionType.MemberAccess: 
       return ((selector as MemberExpression).Member as Reflection.PropertyInfo).Name; 
      case ExpressionType.Call: 
       var method = selector as MethodCallExpression; 
       return FuncToString(method.Arguments[0]) + "." + FuncToString(method.Arguments[1]); 
      case ExpressionType.Quote: 
       return FuncToString(((selector as UnaryExpression).Operand as LambdaExpression).Body); 
     } 
     throw new InvalidOperationException(); 
    } 
    public static K Include<T, K>(this EntityCollection<T> mainQuery, Expression<Func<T, object>> subSelector) 
     where T : EntityObject, IEntityWithRelationships 
     where K : class 
    { 
     return null; 
    } 
    public static K Include<T, K>(this T mainQuery, Expression<Func<T, object>> subSelector) 
     where T : EntityObject 
     where K : class 
    { 
     return null; 
    } 
} 
6

actualización. Para aquellos que buscan cómo ampliar su consulta LINQ con .include()

Ya no es:

using System.Data.Entity; 

Con netcoreapp1.0 es:

using Microsoft.EntityFrameworkCore; 
Cuestiones relacionadas