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

Oracle Entity Framework - Opkald tilpasset funktion (EDIT_DISTANCE)

Der er et fantastisk bibliotek til at hjælpe med at kortlægge databasefunktioner og lagrede procedurer til entitetsramme.

Installer Nuget-pakken

- Install-Package EntityFramework.Functions

Opret udvidelsesmetoder til funktioner:

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

Kortlæg det på din EntityFramework-kontekst:

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

Kald din nyligt tilknyttede "ToNumber()"-funktion i dine LINQ-forespørgsler:

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

Og bobs din onkel.

Desværre for Oracle-funktioner, der ligger i et andet skema, såsom UTL_MATCH.EDIT_DISTANCE det kommer ikke til at virke. Du formodes at være i stand til at indstille skemaet, men det ser ud til, at det ikke i øjeblikket fungerer med Oracle eller noget. Men for andre funktioner som SOUNDEX osv. dette burde fungere fint.

Du kan læse dokumentationen for EntityFramework.Functions her



  1. Søg i mysqli-tabel med formular og visningsresultater

  2. Kald en lagret procedure for hver række, der returneres af en forespørgsel i MySQL

  3. sammenligne en kolonne med en liste over værdier i t-sql

  4. SQL-forbindelse med offentlig IP, navngivet instans og portnummer