Ich habe eine LINQ to Entities-Abfrage
%Vor% Kann ich für EF angeben, dass ein cast
auf den Listenpreis angewendet werden soll, bevor er abgefragt und materialisiert wird 1 ? Gibt es etwas wie EntityFunctions.Cast
vielleicht? Oder kann ich die ESQL cast
Funktion verwenden?
Ich möchte, dass der LINQ eine SQL-Abfrage in diesen Zeilen generiert
%Vor%1 Mein Ziel ist es, eine Menge Präzision loszuwerden / die Abfrage zu skalieren. Da es Dezimalsubtraktion und Division gibt, ist das Ergebnis der Mathematik eine Dezimalzahl (38, 26)! Das ist weit mehr als .NET und mehr als ich brauche.
Mit EF können Sie CLR-Funktionen mithilfe von DbFunction
Attribut. Leider sieht es so aus, als wären die eingebauten cast
und convert
keine Funktionen und es sieht nicht so aus, als könnten Sie ihnen zuordnen.
Stattdessen können Sie eine UDF erstellen, die die Umwandlung durchführt und sie in DbModel
abbildet. Die Mapping-API ist kompliziert, daher würde ich die Code First Functions -Bibliothek verwenden, um das für Sie zu tun. (Wenn Sie zuerst die Datenbank oder zuerst das Modell verwenden, können Sie die Zuordnung manuell in Ihrer SSDL und CSDL 1 vornehmen). Es gibt auch keine Möglichkeit, dynamisches Casting in einer UDF auszuführen. Daher müssen Sie für jede gewünschte Besetzung separate Funktionen auswählen. Hier ist ein Beispiel für ein cast(field as decimal(10,4)
.
1 Siehe dieses Blog posten oder diesen MSDN Artikel für weitere Details.
Tags und Links sql-server c# entity-framework linq entity-sql