मेरे पास DATE Oracle प्रकार और EF6.1 के साथ एक समान समस्या है। मेरा समाधान कोडफर्स्टफ़ंक्शंस लाइब्रेरी (केवल 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();
}
इसलिए मैं एंटिटी फ्रेमवर्क को किसी स्थिति में DATE प्रकार का उपयोग करने के लिए बाध्य कर सकता हूं:
var measurement =
context.Measurements
.Where(m => m.MeasuredAt ==
PlantContext.ToDateLocal("2016.01.01 10:00:00", "YYYY.MM.DD Hh24:MI:SS"))
.FirstOrDefault();
यदि आप Oracle का उपयोग करते हैं तो CodeFirstFunctions के साथ फ़ंक्शन नाम और स्कीमा नाम के लिए बड़े अक्षरों का उपयोग करने के लिए सावधान रहें।
यदि आपको अधिक विवरण की आवश्यकता है तो मैंने एक ब्लॉग पोस्ट इसके बारे में एक उदाहरण परियोजना के साथ।