डेटाबेस फ़ंक्शंस और संग्रहीत प्रक्रियाओं को इकाई फ्रेमवर्क में मैप करने में सहायता के लिए एक शानदार लाइब्रेरी है।
Nuget पैकेज इंस्टॉल करें
- Install-Package EntityFramework.Functions
फंक्शन के लिए एक्सटेंशन मेथड्स बनाएं:
public static class OracleFunctions
{
[Function(FunctionType.BuiltInFunction, "TO_NUMBER")]
public static int? ToNumber(this string value) => Function.CallNotSupported<int?>();
}
इसे अपने EntityFramework प्रसंग पर मैप करें:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Add(new FunctionConvention(typeof(OracleFunctions)));
}
अपने LINQ प्रश्नों में अपने नए मैप किए गए "ToNumber ()" फ़ंक्शन को कॉल करें:
.FirstOrDefault(p => p.Id == "209706".ToNumber());
और अपने अंकल की तारीफ़ करते हैं।
दुर्भाग्य से, Oracle फ़ंक्शन के लिए जो एक अलग स्कीमा में रहता है, जैसे UTL_MATCH.EDIT_DISTANCE
यह काम नहीं करेगा। आपको स्कीमा सेट करने में सक्षम होना चाहिए, लेकिन ऐसा लगता है कि यह वर्तमान में ओरेकल या कुछ के साथ काम नहीं कर रहा है। लेकिन अन्य कार्यों जैसे SOUNDEX
. के लिए आदि। यह ठीक काम करना चाहिए।
आप EntityFramework.Functions के लिए दस्तावेज़ीकरण यहां पढ़ सकते हैं