Utiliser Include dans Entity Framework 4 avec des expressions lambda

J’ai vu de nombreux articles sur la façon de surmonter ce problème, tous liés à CTP4, ou d’append mes propres méthodes d’extension.

Existe-t-il un moyen “officiel” inclus dans EF4 pour utiliser les expressions lambda dans include (pour les relations de premier niveau et également pour les niveaux 2 et plus) ou est-ce que cela n’a finalement pas été inclus dans RTM?

Il y en a un – je serais heureux d’apprendre comment le faire, car utiliser l’expression lambda dans mon code maintenant (avec # system.data.entity # system.data.linq) me donne toujours:

Impossible de convertir une expression lambda pour taper ‘ssortingng’ car ce n’est pas un type délégué sur:

var customers = from c in context.Customers.Include(c=>c.Phone) 

La version RTM d’Entity Framework 4.1 inclut en fait des méthodes d’extension dans le fichier EntityFramework.dll , pour un chargement EntityFramework.dll avec lambda via la fonction Include . Incluez simplement la DLL dans votre projet et vous devriez pouvoir écrire du code comme:

 var princesses1 = context.Princesses.Include(p => p.Unicorns).ToList(); 

N’oubliez pas d’append une instruction Import / Using pour inclure l’espace de noms System.Data.Entity . Sinon, le compilateur ne peut pas trouver les méthodes d’extension. Par exemple:

 using System.Data.Entity; 

Consultez cet article du blog de l’équipe ADO.NET pour plus d’informations.

Bien que cela soit implicite dans la question, pour quiconque a le même problème lorsqu’il ne peut pas utiliser lambdas avec .Include, assurez-vous d’avoir ceci:

 using System.Data.Entity; 

Non, il n’y a pas de support officiel pour Include avec l’expression lambda dans RTM pour le moment. J’utilise ça

Lorsque nous parlons de CTP4, nous entendons Entity Framework Feature. C’est une API plus récente que EF4. Il comprend principalement Code First et quelques autres améliorations.

Un bon article sur les expressions lambda dans la méthode include