J'ai vu de nombreux articles sur la façon de surmonter ce problème, tous liés à CTP4, ou sur l'ajout de mes propres méthodes d'extension.
Existe-t-il un moyen inclus dans EF4 "officiel" d'utiliser les expressions lambda dans include (à la fois pour les relations de premier niveau et aussi pour le deuxième niveau et plus) ou est-ce qu'il n'a finalement pas été inclus dans le 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 l'expression lambda en type «chaîne» car il ne s'agit pas d'un type délégué sur:
var customers = from c in
context.Customers.Include(c=>c.Phone)
Réponses:
La version RTM d'Entity Framework 4.1 inclut en fait des méthodes d'extension dans le
EntityFramework.dll
fichier, pour un chargement hâtif avec lambda via laInclude
fonction. Incluez simplement la DLL dans votre projet et vous devriez être capable d'écrire du code comme:N'oubliez pas d'ajouter 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:
Consultez cet article du blog de l'équipe ADO.NET pour plus d'informations.
la source
Bien que cela soit implicite dans la question, pour toute autre personne qui a le même problème où elle ne peut pas utiliser de lambdas avec .Include, assurez-vous d'avoir ceci:
la source
Non, il n'y a pas de support officiel pour Inclure avec 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.
la source