Oracle
 sql >> база данни >  >> RDS >> Oracle

EF6 Oracle TimeStamp &Date

Имах подобен проблем с DATE тип Oracle и EF6.1. Моето решение беше да използвам CodeFirstFunctions библиотека (достъпна само за EF6.1 и по-нови версии) и първо задайте функция за преобразуване в 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;

И по-късно в моя DbContext:

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

Така че мога да принудя Entity Framework да използва тип DATE в условие where:

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

Внимавайте да използвате главни букви за името на функцията и за името на схемата с CodeFirstFunctions, ако използвате Oracle.

Ако имате нужда от повече подробности, написах публикация в блог за това с примерен проект.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да съхранявате неограничен брой знаци в Oracle 11g?

  2. Oracle PL/SQL Trigger да се изпълнява само ако промените са направени в данните след 9-5 часа

  3. oci_bind_by_name не работи в PHP

  4. EF 5 с oracle edmx StoreGeneratedPattern=Проблем със самоличността

  5. Разделена със запетая заявка за множество параметри в PLSQL