Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle Entity Framework - Chiama la funzione personalizzata (EDIT_DISTANCE)

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