Saya memiliki masalah serupa dengan DATE Oracle type dan EF6.1. Solusi saya adalah menggunakan Fungsi CodeFirst library (hanya tersedia untuk EF6.1 dan yang lebih baru) dan tentukan fungsi konversi terlebih dahulu di 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;
Dan nanti di DbContext saya:
[DbFunction("CodeFirstDatabaseSchema", "TO_DATE_LOCAL")]
public static DateTime ToDateLocal(string dateTimeToConvert, string convertFormat)
{
// no need to provide an implementation
throw new NotSupportedException();
}
Jadi saya bisa memaksa Entity Framework untuk menggunakan tipe DATE dalam kondisi where:
var measurement =
context.Measurements
.Where(m => m.MeasuredAt ==
PlantContext.ToDateLocal("2016.01.01 10:00:00", "YYYY.MM.DD Hh24:MI:SS"))
.FirstOrDefault();
Hati-hati menggunakan huruf kapital untuk nama fungsi dan nama skema dengan CodeFirstFunctions jika Anda menggunakan Oracle.
Jika Anda memerlukan detail lebih lanjut, saya telah menulis posting blog tentang ini dengan contoh proyek.