J'obtiens l'erreur suivante en essayant de faire une requête linq:
LINQ to Entities ne reconnaît pas la méthode 'Boolean IsCharityMatching (System.String, System.String)', et cette méthode ne peut pas être traduite en une expression de magasin.
J'ai lu beaucoup de questions précédentes où les gens obtiennent la même erreur, et si je comprends bien, c'est parce que LINQ to Entities nécessite que toute l'expression de requête linq soit traduite en requête serveur, et par conséquent, vous ne pouvez pas appeler une méthode externe dedans. Je n'ai pas encore réussi à convertir mon scénario en quelque chose qui fonctionne, et mon cerveau commence à fondre, alors j'espérais que quelqu'un pourrait me diriger dans la bonne direction. Nous utilisons Entity Framework et le modèle de spécification (et je suis nouveau dans les deux).
Voici le code qui utilise la spécification:
ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference);
charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList();
Voici l'expression linq:
public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied()
{
return p => p.IsCharityMatching(this.charityName, this.charityReference);
}
Voici la méthode IsCharityMatching:
public bool IsCharityMatching(string name, string referenceNumber)
{
bool exists = true;
if (!String.IsNullOrEmpty(name))
{
if (!this.registeredName.ToLower().Contains(name.ToLower()) &&
!this.alias.ToLower().Contains(name.ToLower()) &&
!this.charityId.ToLower().Contains(name.ToLower()))
{
exists = false;
}
}
if (!String.IsNullOrEmpty(referenceNumber))
{
if (!this.charityReference.ToLower().Contains(referenceNumber.ToLower()))
{
exists = false;
}
}
return exists;
}
Faites-moi savoir si vous avez besoin de plus d'informations.
Merci beaucoup,
Annelie
Find()
comment l'utiliser à l' IsSatisfied()
intérieur.