Er is een geweldige bibliotheek om te helpen bij het in kaart brengen van databasefuncties en opgeslagen procedures aan het entiteitskader.
Installeer het Nuget-pakket
- Install-Package EntityFramework.Functions
Uitbreidingsmethoden voor functies maken:
public static class OracleFunctions
{
[Function(FunctionType.BuiltInFunction, "TO_NUMBER")]
public static int? ToNumber(this string value) => Function.CallNotSupported<int?>();
}
Breng het in kaart in uw EntityFramework-context:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionConvention(typeof(OracleFunctions)));
}
Roep uw nieuw toegewezen "ToNumber()"-functie aan in uw LINQ-query's:
.FirstOrDefault(p => p.Id == "209706".ToNumber());
En bobs je oom.
Helaas voor Oracle-functies die zich in een ander schema bevinden, zoals UTL_MATCH.EDIT_DISTANCE
het zal niet werken. Je zou het schema moeten kunnen instellen, maar het lijkt erop dat het momenteel niet werkt met Oracle of zoiets. Maar voor andere functies zoals SOUNDEX
etc. dit zou goed moeten werken.
U kunt de Documentatie voor EntityFramework.Functions hier lezen