sql >> Database >  >> RDS >> Oracle

Oracle Entity Framework - Aangepaste functie aanroepen (EDIT_DISTANCE)

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



  1. ongeldig karakter voor enkele aanhalingstekens voor sql-tekenreeks in java

  2. Cumulatief totaal in MS Sql-server

  3. Een aangepaste sorteervolgorde voor een samenvoegquery hebben in Postgres

  4. Groepeer per week en selecteer records van de huidige week