C'è una fantastica libreria per aiutare con la mappatura delle funzioni del database e delle stored procedure su Entity Framework.
Installa il pacchetto Nuget
- Install-Package EntityFramework.Functions
Crea metodi di estensione per le funzioni:
public static class OracleFunctions
{
[Function(FunctionType.BuiltInFunction, "TO_NUMBER")]
public static int? ToNumber(this string value) => Function.CallNotSupported<int?>();
}
Mappalo sul tuo contesto EntityFramework:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionConvention(typeof(OracleFunctions)));
}
Chiama la funzione "ToNumber()" appena mappata nelle query LINQ:
.FirstOrDefault(p => p.Id == "209706".ToNumber());
E bob tuo zio.
Sfortunatamente, per le funzioni Oracle che risiedono in uno schema diverso, come UTL_MATCH.EDIT_DISTANCE
non funzionerà. Dovresti essere in grado di impostare lo schema, ma sembra che attualmente non funzioni con Oracle o qualcosa del genere. Ma per altre funzioni come SOUNDEX
ecc. questo dovrebbe funzionare bene.
Puoi leggere la Documentazione per EntityFramework.Functions qui