ToString()
Problems der MethodenübersetzungDas Problem:
Das Ausführen einer LINQ to Entities-Abfrage, die die ToString()
-Methode enthält, führt häufig zu einem Fehler: „LINQ to Entities erkennt die Methode ‚System.String ToString()‘ nicht und diese Methode kann nicht in einen Speicherausdruck übersetzt werden.“ ." Dies liegt daran, dass ToString()
nicht direkt in SQL übersetzbar ist.
Die Grundursache:
Entity Framework (EF) übersetzt LINQ-Abfragen in SQL für die Datenbankausführung. Da ToString()
eine .NET-Methode und keine SQL-Funktion ist, schlägt der Übersetzungsprozess fehl.
Die Lösung:
Die zuverlässigste Lösung besteht darin, den Aufruf von ToString()
direkt innerhalb der LINQ-Abfrage zu vermeiden. Speichern Sie stattdessen das Ergebnis von ToString()
in einer Variablen, bevor Sie es in Ihrer Abfrage verwenden. Dadurch kann EF die Abfrage richtig übersetzen.
<code class="language-csharp">string strItem = item.Key.ToString(); IQueryable<entity> pages = from p in context.pages where p.Serial == strItem select p;</code>
Alternative in EF Core:
Neuere Versionen von EF Core bieten die SqlFunctions.StringConvert
-Methode, die einen direkteren Ansatz für String-Konvertierungen innerhalb von LINQ-Abfragen bietet und häufig temporäre Variablen überflüssig macht. Der variable Ansatz bleibt jedoch eine robuste und weitgehend kompatible Lösung.
Das obige ist der detaillierte Inhalt vonWarum kann LINQ to Entities „ToString()' nicht übersetzen und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!