Es gibt eine großartige Bibliothek, die beim Zuordnen von Datenbankfunktionen und gespeicherten Prozeduren zu Entity Framework hilft.
Installieren Sie das Nuget-Paket
- Install-Package EntityFramework.Functions
Erstellen Sie Erweiterungsmethoden für Funktionen:
public static class OracleFunctions
{
[Function(FunctionType.BuiltInFunction, "TO_NUMBER")]
public static int? ToNumber(this string value) => Function.CallNotSupported<int?>();
}
Ordnen Sie es Ihrem EntityFramework-Kontext zu:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionConvention(typeof(OracleFunctions)));
}
Rufen Sie Ihre neu zugeordnete „ToNumber()“-Funktion in Ihren LINQ-Abfragen auf:
.FirstOrDefault(p => p.Id == "209706".ToNumber());
Und wiegt deinen Onkel.
Leider für Oracle-Funktionen, die sich in einem anderen Schema befinden, wie UTL_MATCH.EDIT_DISTANCE
es wird nicht funktionieren. Sie sollten in der Lage sein, das Schema festzulegen, aber es scheint, als ob es derzeit nicht mit Oracle oder so funktioniert. Aber für andere Funktionen wie SOUNDEX
etc. das sollte gut funktionieren.
Sie können die Dokumentation für EntityFramework.Functions hier lesen