LINQ to Entities erkennt nicht die Methode

Bin ich immer die folgende Fehlermeldung, wenn Sie versuchen zu tun, eine linq-Abfrage:

LINQ to Entities erkennt nicht die Methode " Boolean
IsCharityMatching(System.String, System.String)' - Methode, und diese
Methode kann nicht übersetzt werden, in einen laden zu Ausdruck.

Habe ich gelesen, viele der vorherigen Fragen, wo die Leute die gleichen Fehler, und wenn verstehe ich das richtig es ist, weil LINQ to Entities erfordert die ganze linq-Abfrage-Ausdruck übersetzt werden, um eine server-Abfrage, und daher können Sie nicht anrufen, ein außerhalb der Methode. Ich habe nicht in der Lage zu konvertieren mein Szenario in etwas, das funktioniert noch nicht, und mein Gehirn beginnt zu Schmelzen, so war ich der Hoffnung, jemand könnte mich in die richtige Richtung. Wir sind mit Entity Framework und die Spezifikation Muster (und ich bin neu auf beide).

Hier ist der code, verwendet die Spezifikation:

ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference);

charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList();

Hier ist die linq-Ausdruck:

public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied()
{
    return p => p.IsCharityMatching(this.charityName, this.charityReference);
}

Hier ist die IsCharityMatching Methode:

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;
}

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Vielen Dank,

Annelie

check diese Antwort
Überprüfen Sie diese heraus, so gut, danke!
Es wäre schön zu sehen, wie Sie mit Find() wenn wie verwenden Sie IsSatisfied() im inneren.
Related posts - LINQ to Entities nicht erkennt die Methode 'System.String ToString ()' - Methode, und diese Methode kann nicht übersetzt werden in einen Speicher-Ausdruck & Entity-Framework-Spezifikation Muster-Implementierung

InformationsquelleAutor annelie | 2011-08-31

Schreibe einen Kommentar