Tuve un problema similar con el tipo DATE Oracle y EF6.1. Mi solución fue usar Funciones CodeFirst biblioteca (disponible solo para EF6.1 y versiones posteriores) y especifique primero una función de conversión en 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;
Y luego en mi DbContext:
[DbFunction("CodeFirstDatabaseSchema", "TO_DATE_LOCAL")]
public static DateTime ToDateLocal(string dateTimeToConvert, string convertFormat)
{
// no need to provide an implementation
throw new NotSupportedException();
}
Entonces puedo obligar a Entity Framework a usar el tipo DATE en una condición where:
var measurement =
context.Measurements
.Where(m => m.MeasuredAt ==
PlantContext.ToDateLocal("2016.01.01 10:00:00", "YYYY.MM.DD Hh24:MI:SS"))
.FirstOrDefault();
Tenga cuidado de usar letras mayúsculas para el nombre de la función y para el nombre del esquema con CodeFirstFunctions si usa Oracle.
Si necesita más detalles, he escrito un entrada de blog sobre esto con un proyecto de ejemplo.