हम काफी बड़ी प्रणाली में ईएफ 4 का उपयोग कर रहे हैं और कभी-कभी ईएफ 4 एसक्यूएल में कुछ अभिव्यक्तियों को परिवर्तित करने में असमर्थ होने के कारण समस्याओं में भाग लेते हैं। वर्तमान में, हमें या तो कुछ फैंसी फुटवर्क (डीबी/कोड) करने की आवश्यकता है या केवल प्रदर्शन हिट स्वीकार करें और क्वेरी को मेमोरी में निष्पादित करने दें।विस्तारित ईएफ 4 एसक्यूएल जनरेशन
यह कहने की जरूरत नहीं है कि इनमें से कोई भी आदर्श नहीं है और कभी-कभी हैक जिन्हें हमने कभी-कभी उपयोगिता/रखरखाव को कम करने के लिए उपयोग किया है।
हम आदर्श रूप से क्या पसंद करेंगे EF4 SQL प्रदाता की SQL पीढ़ी क्षमताओं का विस्तार करने का एक तरीका है। जाहिर है, कुछ चीजें हैं जैसे नेट विधि कॉल जो हमेशा क्लाइंट-साइड होना चाहिए लेकिन तारीख की तुलना जैसे कुछ कार्यक्षमता (उदाहरण के लिए [लिंक में 0 सप्ताह से Entities) समूह सक्षम होना चाहिए।
मैंने गुगल किया है लेकिन शायद मैं गलत शब्दावली का उपयोग कर रहा हूं क्योंकि मुझे जो भी मिलता है वह ईएफ 4 एसक्यूएल जेनरेशन की नई विशेषताओं के बारे में जानकारी है।
ऐसे लचीला और एक्स्टेंसिबल ढांचे के लिए, यदि यह संभव नहीं है तो मुझे आश्चर्य होगा। मेरे सिर में, मैं [एसक्यूएल 2008] प्रदाता से उत्तराधिकारी की कल्पना कर रहा हूं और एसक्यूएल में कनवर्ट करने के लिए दिए गए अभिव्यक्ति वृक्ष में अतिरिक्त अभिव्यक्तियों/समान को संभालने के लिए इसे विस्तारित कर रहा हूं।
किसी भी मदद/पॉइंटर्स की सराहना की।
हम वीएस -2010 अल्टीमेट, नेट 4 (गैर-क्लाइंट प्रोफाइल) और ईएफ 4 का उपयोग कर रहे हैं। ऐप एएसपी.Net में है और यदि यह एक फर्क पड़ता है तो 64-बिट वातावरण में चल रहा है।
अद्यतन: स्पष्टीकरण के लिए कुछ अनुरोधों के जवाब में;
हम कोड-प्रथम दृष्टिकोण का उपयोग कर रहे हैं और एक कंसोल ऐप है जो डेटाबेस बनाता है और कुछ संदर्भ तालिकाओं को पॉप्युलेट करता है।
मैं संग्रहीत प्रोसेस से दूर रहना पसंद करूंगा जब तक कि वे भी इसी तरह से उत्पन्न नहीं हो सकते - वर्तमान में, डेटाबेस के नए संस्करण आवश्यकतानुसार उत्पन्न होते हैं और एक अलग प्रक्रिया डेटा माइग्रेट/सिंक करती है। सब कुछ हम वर्तमान में डेटाबेस उपयोग इकाइयों के संबंध में करते हैं। मैं मानता हूं कि मैं एक अच्छा कारण नहीं दे सकता लेकिन संग्रहीत प्रोसेस उत्पन्न करने के लिए एसक्यूएल स्क्रिप्ट चला रहा हूं इस परिदृश्य में गलत लगता है - लेकिन अगर मुझे गलत लगता है तो कृपया मुझे सही करें।
किसी विशिष्ट परिदृश्य के संबंध में, मुझे डर है कि मैं लंबे समय से लाल टेप अभ्यास के बिना हमारे कोड से एक नहीं दे सकता - link mentioned above हम जिस चीज की कोशिश कर रहे हैं उसका एक अच्छा उदाहरण है पूरा। इस उदाहरण में, एक तंत्र को लागू करने की तारीख अंकगणित अनुमति देने के लिए:
DateTime firstDay = GetFirstDayOfFirstWeekOfYear();
var userTimes = from t in context.TrackedTimes
group t by new {t.User.UserName, WeekNumber = (t.TargetDate - firstDay).Days/7} into ut
select new
{
UserName = ut.Key.UserName,
WeekNumber = ut.Key.WeekNumber,
Minutes = ut.Sum(t => t.Minutes)
};
मैं एक तरीका है कि इस अकेले नहीं बल्कि एसक्यूएल का उपयोग कर कैसे LINQ-टू-संस्थाओं (सर्वर साइड) का उपयोग कर यह करने के लिए पूरा किया जा सकता देख सकते हैं।
इस तरह के एक संक्षिप्त प्रश्न का उत्तर देना मुश्किल है। क्या, ठीक है, क्या आप समर्थन करने की कोशिश कर रहे हैं। इस सामान को करने के लिए * कई * तरीके हैं (एडमफंक्शन, स्टोर क्वेरीज, शाब्दिक एसक्यूएल निष्पादित करना आदि ...)। –
सच - मैंने एक उदाहरण शामिल करने के लिए प्रश्न का विस्तार किया है। मुझे उम्मीद है कि यह स्पष्ट है? – Basic