Impossible de créer une valeur constante de type 'System.L'objet". Seuls les types primitifs ('tels que Int32, String, et Guid") sont pris en charge dans ce contexte
Je suis en utilisant MVC et Entity Framework. J'ai créé une classe dans mon modèle de dossier avec ce code ci-dessous. Je reçois le message d'erreur ci-dessus avec les deux questions ci-dessous. Je sais qu'il y est un problème connu sur le référencement de non-variables scalaires, mais je ne suis pas sûr de la façon de mettre en œuvre une solution de contournement:
http://msdn.microsoft.com/en-us/library/bb896317.aspx#Y1442
private MovieLibraryDBEntities movieLibraryDBEntitiesContext;
public int getNumberOfEntriesReserved()
{
return (from m in movieLibraryDBEntitiesContext.Movies
where m.CheckedOut.Equals(1)
select m).Count();
//return movieLibraryDBEntitiesContext.Movies
// .Where(e => e.CheckedOut.Equals(1))
// .Select (e => e.Title).Count();
}
Qu'est-ce que
CheckedOut
?OriginalL'auteur user743183 | 2011-05-07
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser
m.CheckedOut.Equals(1)
dans linq-to-interroger des entités. Utilisationm.CheckedOut == 1
maisCheckedOut
doit êtreinteger
.est égal fonctionne très bien dans linq to entities. Je l'utilise tout le temps. par exemple,
.Where(r => r.EmployeeName.Equals(employeeName, StringComparison.InvariantCultureIgnoreCase))
Je vous remercie. C'est une de ces choses qui sont presque impossible à trouver avec le message d'erreur.
OriginalL'auteur Ladislav Mrnka
C'est une vieille question. J'ai eu le même problème lorsque vous essayez de filtrer une colonne nullable à l'aide de la IQueryable interface. J'ai résolu le problème en vérifiant d'abord pour voir si l'objet avait une valeur et puis vérification de la valeur.
OriginalL'auteur Tarzan
même problème à l'aide de
Any()
j'ai dû changer ma clause where à la recherche sur les types primitifs, pour moi, int
donc ce
devient ce
Il y a un post de blog expliquer la bizarrerie.
OriginalL'auteur Kieran