Während der Datenmigration von MySQL zu SQL Server tritt ein häufiger Fehler auf: LINQ to Entities erkennt die System.String ToString()
-Methode nicht und verhindert so die Übersetzung in eine Datenbankabfrage. Dies geschieht normalerweise beim Vergleich von Zeichenfolgen innerhalb einer LINQ-where
-Klausel.
Die Lösung besteht darin, das Zeichenfolgenergebnis von ToString()
in einer temporären Variablen zu speichern, bevor es in der Abfrage verwendet wird. Dadurch wird die Zeichenfolge effektiv als Konstante behandelt, was eine erfolgreiche SQL-Übersetzung ermöglicht. So geht's:
var strItem = item.Key.ToString(); IQueryable<entity> pages = from p in context.pages where p.Serial == strItem select p;
Durch die Zuweisung von item.Key.ToString()
zu strItem
wird das Ergebnis der Methode zu einem konstanten Wert, der vom LINQ to Entities-Übersetzer verstanden wird.
Alternativ bietet die SqlFunctions
-Hilfsklasse, wie von Alex vorgeschlagen (Referenz für den Kontext erforderlich), spezielle Methoden für LINQ to Entities-Abfragen, wodurch möglicherweise die Notwendigkeit einer temporären Variablen entfällt. Ausführliche Anweisungen zur Verwendung von SqlFunctions
.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „LINQ to Entities erkennt die Methode ‚System.String ToString()' nicht'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!