LINQ to entities ne reconnaît pas la méthode 'Int32 IndexOf(Système d'.Chaîne, Système.StringComparison) méthode de
J'ai exécuté une requête linq en utilisant Entityframework comme ci-dessous
GroupMaster getGroup = null;
getGroup = DataContext.Groups.FirstOrDefault(item => keyword.IndexOf(item.Keywords,StringComparison.OrdinalIgnoreCase)>=0 && item.IsEnabled)
lors de l'exécution de cette méthode, je suis d'exception comme ci-dessous
LINQ to entities ne reconnaît pas la méthode 'Int32 IndexOf(Système d'.Chaîne, Système.StringComparison) "méthode", et ce
la méthode ne peut pas être traduit dans un magasin d'expression.
Méthode contains() par défaut sensible à la casse donc je l'ai de nouveau besoin de les convertir à la baisse.Existe t'il une méthode pour vérifier qu'une chaîne correspond à d'autres que la méthode contains et existe t'il une méthode pour résoudre la méthode indexOf problème?
Je pourrait améliorer la réponse si vous exposer les champs connexes de votre
C'est une entité cadre datacontext où le Groupe est DbSet<Entité>
Si ce n'est pas une partie de SqlFunctions msdn.microsoft.com/de-de/library/... vous devez utiliser LINQ to obejects au lieu d'interroger les entités.
en fait à l'Intérieur contient la méthode je pense qu'ils sont de vérifier le même indice de fonctionnalité, alors pourquoi entityframework jeter l'exception.
DataContext.Groups
objet.Contains
est transformé en LIKE
de la déclaration dans les générées requête SQL. Fait de savoir si cette LIKE
est sensible à la casse ou à la casse dépend de la configuration de base de données. Modifier votre base de données pour effectuer la casse de la chaîne de la comparaison et de l'utilisation Contains
.C'est une entité cadre datacontext où le Groupe est DbSet<Entité>
Si ce n'est pas une partie de SqlFunctions msdn.microsoft.com/de-de/library/... vous devez utiliser LINQ to obejects au lieu d'interroger les entités.
en fait à l'Intérieur contient la méthode je pense qu'ils sont de vérifier le même indice de fonctionnalité, alors pourquoi entityframework jeter l'exception.
OriginalL'auteur Code-EZ | 2014-04-22
Vous devez vous connecter pour publier un commentaire.
Vous avez vraiment seulement quatre options ici.
numéro 4 n'est pas une bonne option, sauf si votre résultat est assez petit. #3 c'est bien, si vous ne pouvez pas modifier la base de données (mais vous ne pouvez pas utiliser Linq avec elle).
numéros 1 et 2 sont des choix que vous devez faire sur votre modèle de données dans son ensemble, ou si vous voulez seulement faire dans des domaines spécifiques.
Changer les Serveurs de classement:
http://technet.microsoft.com/en-us/library/ms179254.aspx
De changer le Classement de Base de données:
http://technet.microsoft.com/en-us/library/ms179254.aspx
Modifier les Colonnes de Classement:
http://technet.microsoft.com/en-us/library/ms190920(v=sql.105).aspx
À l'aide de l'Colliger de l'instruction dans une procédure stockée:
http://technet.microsoft.com/en-us/library/ms184391.aspx
OriginalL'auteur Erik Funkenbusch
La
IndexOf
méthode De la classe string ne sera pas reconnu par Entity Framework, Veuillez remplacer cette fonction avec SQLfunction ou Fonctions canoniquesVous pouvez également prendre l'aide de ici ou peut-être ici
Vous pouvez utiliser l'exemple de code ci-dessous:
OriginalL'auteur Harikant
Au lieu de cela, vous pouvez utiliser cette méthode ci-dessous pour abaisser le cas:
Si votre élément est de type
string
. Cela pourrait vous aider à traverser cette exception.Je vois, mais je devine que vous allez à travers mauvaise direction. Ne serait pas @MarcinJuraszek commentaire faire l'affaire?
autres que la résolution de ce problème mon gros doute est à l'Intérieur contient la méthode je pense qu'ils sont de vérifier le même indice de fonctionnalité, alors pourquoi entityframework jeter l'exception?
Que voulez-vous dire "vérifier le même indice de fonctionnalité'?
Si vous creusez dans certains états membres, le code fourni ils utilisent
.ToUpper()
. Assez bon pour MS, assez bon pour moi, dis-je.OriginalL'auteur Tolga Evcimen
Erik Funkenbush réponse est parfaitement valide lorsque le regarder comme un problème de base de données. Mais j'ai le sentiment que vous avez besoin d'une meilleure structure de conservation des données concernant les mots-clés si vous voulez traverser efficacement.
Noter que cette réponse n'est pas destiné à être mieux, il est destiné à résoudre le problème dans votre modèle de données, plutôt que de rendre l'environnement de s'adapter à l'actuelle (apparemment imparfait, puisqu'il y a un problème) modèle de données que vous avez.
Ma principale suggestion, indépendamment de la contrainte de temps (je me rends compte que ce n'est pas la méthode la plus simple fix) serait d'ajouter une table séparée pour les mots clés (avec un plusieurs-à-plusieurs relations avec ses classes associées).
Cela devrait permettre à la recherche pour le mot clé, et seulement puis extraire les éléments qui ont un mot clé lié (basée sur l'ID plutôt qu'un composé de la chaîne).
Mais je comprends tout à fait si ce type de correction n'est plus possible dans le projet actuel. Je voulais mentionner que, dans le cas où quelqu'un dans le futur bute sur cette question et a encore la possibilité pour l'amélioration de la structure des données.
OriginalL'auteur Flater