sql >> Databáze >  >> RDS >> Oracle

Oracle Entity Framework – volání vlastní funkce (EDIT_DISTANCE)

Existuje úžasná knihovna, která pomáhá s mapováním databázových funkcí a uložených procedur na Entity Framework.

Nainstalujte balíček Nuget

- Install-Package EntityFramework.Functions

Vytvořte metody rozšíření pro funkce:

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

Namapujte jej na svůj kontext EntityFramework:

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

Zavolejte svou nově namapovanou funkci "ToNumber()" ve svých dotazech LINQ:

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

A švihá svého strýce.

Bohužel pro funkce Oracle, které jsou umístěny v jiném schématu, jako je UTL_MATCH.EDIT_DISTANCE to nebude fungovat. Předpokládá se, že budete schopni nastavit schéma, ale zdá se, že aktuálně nefunguje s Oracle nebo tak něco. Ale pro další funkce jako SOUNDEX atd. to by mělo fungovat dobře.

Dokumentaci k EntityFramework.Functions si můžete přečíst zde



  1. psycopg2.ProgrammingError:událost vztahu neexistuje

  2. Přidání zalomení řádku do textu MySQL INSERT INTO

  3. PHP + MySQL fronta

  4. Chyba při vytváření tabulky