मैंने एएसपी.नेट वेब एपीआई के साथ एक अच्छा छोटा एपीआई बनाया, लेकिन मुझे लगता है कि इकाइयों को मेरे संदर्भ (इकाई ढांचे) से वापस करने का अधिकार नहीं है, इसलिए मैं डीटीओ ऑब्जेक्ट्स में सबकुछ मैप कर रहा हूं।एएसपी.नेट वेब एपीआई वापसी योग्य डीटीओ?
जो मुझे समझ में नहीं आता है हालांकि: मैं अपना संदर्भ क्वेरी करने योग्य कैसे रख सकता हूं, लेकिन फिर भी केवल संस्थाओं के बजाय डीटीओ वापस कर सकता हूं? या यह संभव नहीं है?
public IQueryable<ItemDto> Get()
{
using (EfContext context = new EfContext())
{
Mapper.CreateMap<Item, ItemDto>()
.ForMember(itemDto => itemDto.Category, mce => mce.MapFrom(item => item.Category.Name));
IEnumerable<ItemDto> data = Mapper.Map<IEnumerable<Item>, IEnumerable<ItemDto>>(context.Items
.OrderByDescending(x => x.PubDate)
.Take(20));
return data.AsQueryable();
}
}
आप मैं डेटा लोड देख सकते हैं, और बनाने है कि छोटी IEnumerable संग्रह queryable के रूप में:
यह मेरा कोड है। समस्या यह है कि कोड के इस टुकड़े के लिए जेनरेट की गई क्वेरी शायद काफी अक्षम है क्योंकि यह पहले सभी आइटम लोड करती है (या कम से कम 20 पहले आइटम) और फिर आउटपुट फ़िल्टर करती है।
मुझे आशा है कि मैंने अपनी समस्या को जितना संभव हो उतना अच्छा बताया है, यह समझाने में थोड़ा मुश्किल है। मुझे Google पर इसके बारे में कुछ भी नहीं मिला।
वेब एपीआई एंडपॉइंट्स को IQueryable के रूप में बेनकाब न करें ... यदि आपको वास्तव में इसकी आवश्यकता है, तो वेब एपीआई ओडाटा के साथ जाएं। अन्यथा, बस सादे पुराने आरईएसटी एंडपॉइंट्स के साथ चिपके रहें और अपने नियंत्रक कार्यों पर पैरामीटर के रूप में किसी भी तरह के फ़िल्टरिंग को बेनकाब करें। – mare