Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle Entity Framework — wywołanie funkcji niestandardowej (EDIT_DISTANCE)

Istnieje niesamowita biblioteka, która pomaga w mapowaniu funkcji bazy danych i procedur składowanych na Entity Framework.

Zainstaluj pakiet Nuget

- Install-Package EntityFramework.Functions

Utwórz metody rozszerzające dla funkcji:

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

Zmapuj to na swój kontekst EntityFramework:

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

Wywołaj nowo zmapowaną funkcję „ToNumber()” w zapytaniach LINQ:

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

I kołysze wujka.

Niestety, w przypadku funkcji Oracle, które znajdują się w innym schemacie, np. UTL_MATCH.EDIT_DISTANCE to nie zadziała. Powinieneś być w stanie ustawić schemat, ale wygląda na to, że obecnie nie działa z Oracle lub coś takiego. Ale dla innych funkcji, takich jak SOUNDEX itp. to powinno działać poprawnie.

Możesz przeczytać Dokumentację EntityFramework.Functions tutaj



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. czy jest jakaś funkcja do tłumaczenia danych w sql

  2. zbieraj informacje dba_users w bazie danych Oracle po połączeniu jako użytkownik

  3. Odejmowanie dat Oracle

  4. Unikaj problemu z BigDecimal podczas migracji z Javy 1.4 do Javy 1.5+

  5. Czy istnieje alternatywa dla pakietu utl_http dla żądań http przy użyciu Oracle pl sql?