sql >> Databasteknik >  >> RDS >> Oracle

Oracle Entity Framework - Anrop anpassad funktion (EDIT_DISTANCE)

Det finns ett fantastiskt bibliotek som hjälper dig att kartlägga databasfunktioner och lagrade procedurer till Entity Framework.

Installera Nuget-paketet

- Install-Package EntityFramework.Functions

Skapa tilläggsmetoder för funktioner:

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

Kartlägg det på din EntityFramework-kontext:

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

Anropa din nyligen mappade "ToNumber()"-funktion i dina LINQ-frågor:

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

Och guppar på din farbror.

Tyvärr, för Oracle-funktioner som finns i ett annat schema, som UTL_MATCH.EDIT_DISTANCE det kommer inte att fungera. Du ska kunna ställa in schemat, men det verkar som om det för närvarande inte fungerar med Oracle eller något. Men för andra funktioner som SOUNDEX etc. detta borde fungera bra.

Du kan läsa dokumentationen för EntityFramework.Functions här



  1. Konfigurera GlassFish JDBC-anslutningspool för att hantera Amazon RDS Multi-AZ-failover

  2. postgreSQL-fel initdb:kommandot hittades inte

  3. python mysqldb-fel på min mac:Biblioteket är inte laddat:@rpath/libmysqlclient.21.dylib

  4. Hur man får i en variabel värdet av valet av en Select/Drop Down Meny PHP eller HTML