Der angegebene Typ member "Date" wird in LINQ to Entities Exception nicht unterstützt
Bekam ich eine Ausnahme während der Ausführung der folgenden Anweisungen.
DateTime result;
if (!DateTime.TryParse(rule.data, out result))
return jobdescriptions;
if (result < new DateTime(1754, 1, 1)) //sql can't handle dates before 1-1-1753
return jobdescriptions;
return jobdescriptions.Where(j => j.JobDeadline.Date == Convert.ToDateTime(rule.data).Date );
Ausnahme
The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
Weiß ich, was die exception bedeutet, aber ich weiß nicht wie ich es loswerden. Keine Hilfe?
InformationsquelleAutor der Frage nebula | 2012-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
LINQ to Entities nicht übersetzen kann, am meisten .NETTO-Datum-Methoden (einschließlich der casting-Sie verwendet) in SQL da es keine entsprechende SQL.
Die Lösung ist die Verwendung der modernsten Methoden, die außerhalb der LINQ-Anweisung, und dann gehen in einen Wert ein. Es sieht aus, als wenn Konvertieren.ToDateTime(Regel.Daten).Datum ist der den Fehler verursacht.
Aufruf von Date auf DateTime-Eigenschaft auch nicht in SQL übersetzt, so ist ein workaround zu vergleichen .Jahr .Monat und .Tag-Eigenschaften, die übersetzt werden können, LINQ, da Sie nur ganze zahlen.
InformationsquelleAutor der Antwort Judo
Können Sie die TruncateTime Methode der EntityFunctions zu erreichen, eine korrekte übersetzungen der
Date
- Eigenschaft in SQL:Update:
EntityFunctions
ist veraltet in EF6 VerwendenDbFunctions.TruncateTime
InformationsquelleAutor der Antwort Slauma
Für EF6 verwenden DbFunctions.TruncateTime(mydate) statt.
InformationsquelleAutor der Antwort KingOfHypocrites
"EntityFunctions.TruncateTime" oder "DbFunctions.TruncateTime" in ef6 Ist Arbeit, aber es hat einige performance-Problem von Big Data.
Ich denke, der beste Weg ist, um zu handeln, wie diese:
es ist besser als die Verwendung von teilen des Datums. da die Abfrage wird schneller ausgeführt, in großen Daten.
InformationsquelleAutor der Antwort Mahdi Shahbazi
Versuchen Sie es mit
AsEnumerable()
schaltet den Kontext der Abfrage von LINQ to Entities, LINQ to Objects damit der Zustand sich nicht konvertiert SQLInformationsquelleAutor der Antwort Caleb Kiage
Was es bedeutet, ist, dass LINQ to SQL nicht weiß, wie Sie die
Date
Eigenschaft in einem SQL-Ausdruck. Dies ist, weil dieDate
Eigenschaft desDateTime
Struktur hat keine analoge in SQL.InformationsquelleAutor der Antwort Adam Robinson
Es funktionierte für mich.
Quelle: Asp.net Foren
InformationsquelleAutor der Antwort M.R.T2017
Ich habe das gleiche problem, aber ich arbeiten mit DateTime-Reicht.
Meine Lösung ist zum Bearbeiten der start-Zeit (mit einem beliebigen Datum) , 00:00:00
und die Ende-Zeit auf 23:59:59
Also ich muss nicht mehr konvertieren meiner DateTime -, Date -, sondern es bleibt DateTime.
Wenn Sie nur ein DateTime -, Sie können auch die start-Zeit (mit einem beliebigen Datum) , 00:00:00 und die Endzeit auf 23:59:59
Dann such dir, als wäre es eine Zeitspanne.
Ihre tun können, es auch mit DateTime-Range:
InformationsquelleAutor der Antwort peter70