Beim Ausführen einer LINQ-Abfrage, die versucht, Double.Parse auf Zeichenfolgeneigenschaften in einem Datenbankkontext anzuwenden, können Benutzer auf Folgendes stoßen Fehler:
„LINQ to Entities erkennt die Methode ‚Double Parse(System.String)‘ nicht und diese Methode kann nicht in einen Speicherausdruck übersetzt werden.“
Entity Framework (EF) wurde entwickelt, um LINQ-Abfragen in SQL-Befehle zu übersetzen, die in der Datenbank ausgeführt werden können. Die Double.Parse-Methode ist jedoch keine gültige SQL-Funktion. Daher kann EF es nicht in SQL übersetzen und die Abfrage erfolgreich ausführen.
Um dieses Problem zu beheben, müssen Sie eine benutzerdefinierte Methode erstellen, die denselben Vorgang wie Double.Parse und make ausführt EF erkennt es, damit es es in SQL übersetzen kann.
Schritt 1: Definieren Sie den Benutzerdefiniert Funktion
Fügen Sie in der mit Ihrem Datenkontext verknüpften Entity Data Model (EDMX)-Datei die folgende Funktionsdefinition innerhalb der
<Function Name="ParseDouble" ReturnType="Edm.Double"> <Parameter Name="stringvalue" Type="Edm.String" /> <DefiningExpression> cast(stringvalue as Edm.Double) </DefiningExpression> </Function>
Diese Funktion teilt EF mit, wie ein String-Wert in einen Double-Wert in SQL konvertiert werden soll.
Schritt 2: Implementieren Sie die benutzerdefinierte Methode
Erstellen Sie in der Teilklasse, die Ihren Datenkontext definiert, eine Methode, die der Signatur der Funktion entspricht, die Sie im EDMX definiert haben Datei:
public partial class MyDataContext { [EdmFunction("YourModel", "ParseDouble")] public static double ParseDouble(string stringvalue) { return Double.Parse(stringvalue); } }
Schritt 3: Benutzerdefinierte Funktion in LINQ-Abfrage verwenden
Jetzt können Sie die ParseDouble-Funktion in Ihren LINQ-Abfragen verwenden:
var query = context.MyEntities .Select(e => new { DoubleValue = ParseDouble(e.StringValue) });
Indem Sie diese Schritte befolgen, können Sie EF ermöglichen, Ihre LINQ-Abfragen, die Double.Parse verwenden, in gültiges SQL zu übersetzen. Behebung des Fehlers „LINQ to Entities erkennt die Methode nicht“.
Das obige ist der detaillierte Inhalt vonWie kann das Problem behoben werden, dass „LINQ to Entities die Methode ‚Double Parse(System.String)' nicht erkennt'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!