Impossible de convertir l'expression lambda en "string", car ce n'est pas un type délégué
Dans mon contrôleur, je suis en train d'utiliser include avec EF4 pour sélectionner des entités liées, mais l'expression lambda est en train de jeter l'erreur suivante,
j'ai l'entité définie dans la classe d'Entité comme
public class CustomerSite
{
public int CustomerSiteId { get; set; }
public int CustomerId { get; set; }
public virtual Customer Customer { get; set; }
}
Ensuite dans mon contrôleur, j'ai
var sites = context.CustomerSites.Include(c => c.Customer);
public ViewResult List()
{
var sites = context.CustomerSites.Include(c => c.Customer);
return View(sites.ToList());
}
Quelqu'un peut-il bien vouloir me diriger dans la bonne direction sur ce que je fais de mal?
source d'informationauteur Liam
Vous devez vous connecter pour publier un commentaire.
La
Include
méthode attend une chaîne de caractères, pas un lambda:Bien sûr, vous pourriez écrire un méthode d'extension personnalisée qui serait de travailler avec les expressions lambda et de rendre votre code indépendant de la magie des cordes et refactoriser plus convivial.
Mais quoi que vous s'il vous PLAÎT, OH s'il vous PLAÎT ne pas passer EF générée automatiquement les objets de votre point de vue. UTILISER DES MODÈLES DE VUE.
Bien, le post est assez ancien, mais juste de répondre ici à mettre à jour. Eh bien, la
Include()
méthode avec Entity Framework 4.1 a des méthodes d'extension et il accepte également d'une expression lambda. Doncest parfaitement valide, tout ce que vous devez faire est d'utiliser cette:
Est une méthode d'extension dans le Système.Les données.Entité de l'espace de noms, vous devez ajouter:
Ensuite, vous pouvez utiliser l'expression lambda, au lieu de la chaîne.
Include
prend une chaîne de caractères, pas une expression lambda.Changer de
CustomerSites.Include("Customer")
Si vous obtenez cette erreur de Rasoir:
Ex:
C# ne sais pas comment faire pour convertir la chaîne de caractères valide bool ou de type connu.
Donc changer votre chaîne comme ci-dessous:
ou