sql >> Base de Datos >  >> RDS >> Oracle

Oracle Entity Framework - Función personalizada de llamada (EDIT_DISTANCE)

Hay una biblioteca increíble para ayudar con la asignación de funciones de base de datos y procedimientos almacenados a Entity Framework.

Instale el paquete Nuget

- Install-Package EntityFramework.Functions

Crear métodos de extensión para funciones:

public static class OracleFunctions
{
   [Function(FunctionType.BuiltInFunction, "TO_NUMBER")]
   public static int? ToNumber(this string value) => Function.CallNotSupported<int?>();
}

Mapéelo en su EntityFramework Context:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Conventions.Add(new FunctionConvention(typeof(OracleFunctions)));
}

Llame a su función "ToNumber()" recién asignada en sus consultas LINQ:

.FirstOrDefault(p => p.Id == "209706".ToNumber());

Y sacude a tu tío.

Desafortunadamente, para las funciones de Oracle que residen en un esquema diferente, como UTL_MATCH.EDIT_DISTANCE no funcionará. Se supone que debe poder configurar el esquema, pero parece que actualmente no funciona con Oracle o algo así. Pero para otras funciones como SOUNDEX etc. esto debería funcionar bien.

Puede leer la Documentación para EntityFramework.Functions aquí