2011-04-24 15 views
6

ठीक है, मैं इस पर एक हथौड़ा के साथ अपने कीबोर्ड को तोड़ने वाला हूं। मैंने इस सप्ताह के अंत में ईएफ के साथ खेलने का फैसला किया और मैंने 4.0 में एक परियोजना शुरू की। मुझे लगता है कि 4.1 बाहर है इसलिए मैं पैकेज को डाउनलोड और इंस्टॉल करता हूं।इकाई फ्रेमवर्क 4.1, लोड() विधि नहीं मिल रहा है?

मेरे आश्चर्य की कल्पना करें जब मैं dbExtensions में लोड() विधि का उपयोग करने के लिए जाता हूं और इसे नहीं मिल रहा है। इसलिए मैं EntityFramework द्विआधारी कि संस्थापक बनाई गई के लिए एक संदर्भ जोड़ने के लिए, परियोजना से System.Data.Entity संदर्भ हटाने के पुनर्निर्माण, और यह कहते हैं

"प्रकार 'System.Data.Objects.ObjectContext' एक विधानसभा है कि संदर्भित नहीं में परिभाषित किया गया है। आप विधानसभा के लिए 'System.Data.Entity, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b77a5c561934e089' एक संदर्भ जोड़ना होगा। "

मैंने अपने मॉडल को पुन: उत्पन्न करने का प्रयास किया, मैंने चीजों को हटाने की कोशिश की, मैंने सीधे उपयोग के माध्यम से 4.1 का संदर्भ देने की कोशिश की। कुछ भी काम नहीं करता है।

मुझे स्पष्ट रूप से कुछ बुनियादी याद आ रही है। 4.1 ढांचे का उपयोग करने के लिए मैं दृश्य स्टूडियो को कैसे बिल्ली में बताता हूं ??

उत्तर

4

इकाई फ्रेमवर्क 4.1 अलग संस्करण नहीं है। इसे अभी भी एंटिटी फ्रेमवर्क 4.0 और इसकी असेंबली की आवश्यकता है ताकि आप अपने संदर्भों से System.Data.Entity.dll को हटा नहीं सकें। इसके अलावा EFv4.1 मुख्य रूप से नई डीबीकॉन्टेक्स्ट एपीआई के बारे में है, जब तक कि आप एंटिटी ऑब्जेक्ट्स से पीओसीओ और DbContext पर स्विथ करने जा रहे हैं, आपको EntityFramework.dll को संदर्भित करके कोई लाभ नहीं मिलेगा (Include को दृढ़ता से IQueryable पर टाइप करके)।

0

Ladislav की पोस्ट सटीक है। थोड़ा और विवरण जोड़ने के लिए, this ADO.Net team blog post बताता है कि ईएफ 4.1 प्रोजेक्ट में ईएफ 4.0 प्रोजेक्ट में कोड पीढ़ी को सही तरीके से कैसे बदला जाए।

हालांकि, मेरे पास 4.1 तक अपग्रेड करने और डीबीकॉन्टेक्स्ट (कुछ अन्य सुविधाओं सहित) का उपयोग करने के बाद भी एक ही समस्या है। मेरे पास कोई भी लोड नहीं है। मुझे लगता है कि आप उसी स्थान पर थे से पहले आपने संदर्भों के साथ गड़बड़ कर (अनावश्यक) शुरू किया था।

ऊपर दिए गए लिंक को देखें, अगर यह मदद करता है तो मुझे बताएं, और यदि आपको लापता होने का समाधान मिल जाए। लोड() फ़ंक्शन सुनिश्चित करें और हमें बताएं।

1

मुझे एक ही समस्या मिली, और अभी भी मूल कारण नहीं पता है।

var query = from d ... 
query.Load(); 

या

(DbSet)context.myentity).Load(); 

प्रयास करें:

अंत में मैं कुछ वैकल्पिक समाधान का उपयोग करें।

+0

और बस बुला 'query.ToList()' के साथ एक क्या अंतर है? –

+0

"एक क्वेरी निष्पादित किया जाता है जब: * यह द्वारा एक foreach (सी #) प्रगणित है या प्रत्येक (विजुअल बेसिक) बयान के लिए * यह इस तरह के toArray, ToDictionary, या ToList के रूप में एक संग्रह आपरेशन द्वारा प्रगणित है ।। * LINQ ऑपरेटरों जैसे कि पहले या किसी को क्वेरी के बाहरी भाग में निर्दिष्ट किया गया है। * लोड एक्सटेंशन विधि को डीबीसेट पर बुलाया जाता है। " http://msdn.microsoft.com/en-us/library/gg696167%28v=VS.103%29.aspx – user829248

+1

@LadislavMrnka 'लोड' और 'ToList' के बीच का अंतर यह है कि' लोड' के साथ कोई सूची नहीं बनाई गई है ' । _This वास्तव में सूची बनाने के बिना ToList को कॉल करने के बराबर है ._ [लिंक] (http://msdn.microsoft.com/en-us/library/system.data.entity.dbextensions.load (v = VS। 103) .aspx) –

27

मुझे याद आ .load खोज करने में कामयाब() निम्न को जोड़कर समारोह:

using System.Data.Entity; 
+3

यह उत्तर है। लोड System.Data.Entity के भीतर एक एक्सटेंशन विधि है। –

+0

इसे उत्तर के रूप में चिह्नित किया जाना चाहिए, मेरे लिए काम किया –

+0

वाह। यह पता लगाने के लिए मेरे लिए बहुत मानव था कि यह "उपयोग" मुद्दा था। लेकिन यह था। बहुत बहुत धन्यवाद। बहुत बढ़िया जवाब। – Ravi

2

या तो से System.Data.Entity.dll करने के लिए एक संदर्भ जोड़ें:

GAC (।ऐड संदर्भ संवाद में नेट टैब)

या

C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.Entity.dll

संबंधित मुद्दे