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

Znacznik czasu i data EF6 Oracle

Miałem podobny problem z typem DATE Oracle i EF6.1. Moim obejściem było użycie CodeFirstFunctions biblioteka (dostępna tylko dla EF6.1 i nowszych) i najpierw określ funkcję konwersji w Oracle:

create or replace FUNCTION TO_DATE_LOCAL 
(
  DATETIMETOCONVERT IN VARCHAR2 
, CONVERTFORMAT IN VARCHAR2 
) RETURN DATE AS 
BEGIN
  RETURN to_date(DATETIMETOCONVERT, CONVERTFORMAT);
END TO_DATE_LOCAL;

A później w moim DbContext:

[DbFunction("CodeFirstDatabaseSchema", "TO_DATE_LOCAL")]
public static DateTime ToDateLocal(string dateTimeToConvert, string convertFormat)
{
    // no need to provide an implementation
    throw new NotSupportedException();
}

Mogę więc zmusić Entity Framework do używania typu DATE w warunku WHERE:

var measurement = 
  context.Measurements
    .Where(m => m.MeasuredAt == 
          PlantContext.ToDateLocal("2016.01.01 10:00:00", "YYYY.MM.DD Hh24:MI:SS"))
    .FirstOrDefault();

Uważaj, aby użyć wielkich liter w nazwie funkcji i nazwie schematu z CodeFirstFunctions, jeśli używasz Oracle.

Jeśli potrzebujesz więcej szczegółów, napisałem wpis na blogu o tym z przykładowym projektem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Projekt bazy danych planowania lekarza

  2. ORA-00907:brak prawego nawiasu

  3. Czy w Oracle można przekonwertować bardzo duży ciąg (klob) oddzielony przecinkiem na tabelę z lepszą wydajnością?

  4. Lista wyszukiwania Oracle słów w łańcuchu i powróć do istniejących

  5. Narzędzie:generuj procedurę PL/SQL do eksportu danych z tabeli w 2 minuty