प्रकार या नाम स्थान का नाम 'ऑब्जेक्ट्स' नामस्थान 'System.Data' में मौजूद नहीं है


102

मैं n-tier ऐप बनाने के लिए संस्थाओं, C # और SQL सर्वर का उपयोग कर रहा हूं। मैं अपने सभी डीएएल घटकों के लिए कुछ आधार कक्षाएं बना रहा हूं। इस बेस क्लास में, मैं ऑब्जेक्ट ऑब्जेक्ट द्वारा विरासत में मिली ObjectContext बेस क्लास के कनेक्शन स्टेट को हैंडल करना चाहता हूं।

संकलन में निम्न त्रुटि है:

प्रकार या नाम स्थान का नाम 'ऑब्जेक्ट्स' नामस्थान 'System.Data' में मौजूद नहीं है (क्या आप असेंबली संदर्भ याद कर रहे हैं?)

साथ ही, कथन का उपयोग कर System.Data.Objects एक ही कारण के लिए हल नहीं करता है।

मैंने असेंबली को संदर्भ के रूप में जोड़ने की कोशिश की, लेकिन इसे विधानसभा संदर्भों के .NET टैब में नहीं मिला।

कोई विचार? धन्यवाद!

जवाबों:


207

आपको .NET असेंबली System.Data.Entity.dll का संदर्भ जोड़ना होगा।


1
इसने काम कर दिया! उत्सुक, अगर System.Data.objects नेमस्पेस वास्तव में System.Data.Entity के भीतर मौजूद है?
22

52

यदि आप Entity Framework 6 का उपयोग कर रहे हैं, तो नाम स्थान बदल गया है। आप उपयोग करना चाहते हैं

System.Data.Entity.Core.Objects.ObjectQuery

मेरे पास एनगेट पैकेज मैनेजर के माध्यम से एंटिटी फ्रेमवर्क 6.1.3 स्थापित है। मेरे पास Microsoft की असेंबली System.Data.Entity का संदर्भ नहीं है। इसकी मुझे त्रुटियाँ दे रहा है। तो मेरा सवाल यह है कि क्या मुझे स्टेटमेंट का उपयोग करने से पहले System.Data.Entity FIRST का संदर्भ देना होगा?
vibs2006

31

कुछ समय पहले EF5 से EF6 नगेट में अपग्रेड किया गया और इस मुद्दे का सामना करता रहा। मैं इसे संदर्भ के लिए जनरेट किए गए कोड को अपडेट करके ठीक कर दूंगा System.Data.Entity.Core.Objects, लेकिन पीढ़ी के बाद इसे फिर से बदल दिया जाएगा (जैसा कि इसके उत्पन्न होने के बाद अपेक्षित है)।

इससे अच्छे के लिए समस्या हल हो गई:

http://msdn.microsoft.com/en-us/data/upgradeef6

यदि आपके पास EF डिज़ाइनर के साथ कोई मॉडल बनाया गया है, तो आपको EF6 संगत कोड जनरेट करने के लिए कोड जेनरेशन टेम्प्लेट को अपडेट करना होगा। नोट: वर्तमान में विजुअल स्टूडियो 2012 और 2013 के लिए केवल EF 6.x DbContext जनरेटर टेम्पलेट उपलब्ध हैं।

  1. मौजूदा कोड-जेनरेशन टेम्प्लेट हटाएं। इन फ़ाइलों को आम तौर पर <edmx_file_name> .tt और <edmx_file_name> .Context.tt नाम दिया जाएगा और समाधान एक्सप्लोरर में आपकी edmx फ़ाइल के अंतर्गत नामांकित किया जाएगा। आप समाधान एक्सप्लोरर में टेम्पलेट्स का चयन कर सकते हैं और Delउन्हें हटाने के लिए कुंजी दबा सकते हैं।
    नोट: वेब साइट परियोजनाओं में टेम्प्लेट आपकी edmx फ़ाइल के अंतर्गत नेस्टेड नहीं होंगे, लेकिन समाधान एक्सप्लोरर में इसके साथ सूचीबद्ध होते हैं।
    नोट: VB.NET प्रोजेक्ट्स में आपको नेस्टेड टेम्पलेट फ़ाइलों को देखने में सक्षम होने के लिए 'Show All Files' को इनेबल करना होगा।
  2. उपयुक्त EF 6.x कोड जनरेशन टेम्पलेट जोड़ें। EF डिज़ाइनर में अपना मॉडल खोलें, डिज़ाइन की सतह पर राइट-क्लिक करें और Add Code Generation Item चुनें ...
    • यदि आप DbContext API (अनुशंसित) का उपयोग कर रहे हैं तो EF 6.x DbContext जनरेटर डेटा टैब के तहत उपलब्ध होगा ।
      नोट: यदि आप विज़ुअल स्टूडियो 2012 का उपयोग कर रहे हैं, तो आपको इस टेम्पलेट के लिए EF 6 टूल इंस्टॉल करना होगा। देखें इकाई की रूपरेखा प्राप्त जानकारी के लिए।
    • यदि आप ObjectContext API का उपयोग कर रहे हैं तो आपको ऑनलाइन टैब का चयन करना होगा और EF 6.x EntityOxtject जेनरेटर की खोज करनी होगी
  3. यदि आपने कोड पीढ़ी के टेम्प्लेट में कोई अनुकूलन लागू किया है तो आपको उन्हें अपडेट किए गए टेम्प्लेट में फिर से लागू करना होगा।

3

वीएस 2013 में भी यही समस्या है

मैंने Web.config में जोड़ा:

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />

इसने एक जादू की तरह काम किया।

मैंने इसे पृष्ठ पर पाया: http://www.programmer.bz/Home/tabid/115/asp_net_sql/281/The-type-or-namespace-name-Objects-does-not-exist-in-the-namespace- SystemData.aspx


3

अगर आप "System.Data.Objects.EntityFunctions" का उपयोग करना चाहते हैं

EF 6.1+ में "System.Data.Entity.DbFunctions" का उपयोग करें


3

इस का उपयोग करते समय EF 6+ के लिए मेरे मामले में:

System.Data.Entity.Core.Objects.ObjectQuery

इस आदेश के भाग के रूप में:

var sql = ((System.Data.Entity.Core.Objects.ObjectQuery)query).ToTraceString();

मुझे यह त्रुटि मिली:

Cannot cast 'query' (which has an actual type of 'System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>') to 'System.Data.Entity.Core.Objects.ObjectQuery'

इसलिए मैंने इसका उपयोग करने के लिए समाप्त कर दिया:

var sql = ((System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>)query).ToString();    

बेशक आपका गुमनाम प्रकार का हस्ताक्षर अलग हो सकता है।

HTH।


0

मैंने .dll फ़ाइल के लिए एक संदर्भ जोड़ा, System.Data.Linq के लिए, ऊपर पर्याप्त नहीं था। आप निम्न संस्करणों के लिए विभिन्न निर्देशिकाओं में .dll पा सकते हैं।

System.Data.Linq C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ फ्रेमवर्क \ v3.5 \ System.Data.Linq.dll 3.5.0.0

System.Data.Linq C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System \ System.Data.Linq.dll 4.0.0.0


2
सुधार इस सवाल का जवाब देता है: टाइप या नेमस्पेस नाम '
लाइनक

0

आपको .NET असेंबली System.Data.Linq का संदर्भ जोड़ना होगा


हाय Null29, क्या आप बता सकते हैं कि आपका जवाब पहले से उपलब्ध कराए गए लोगों की तुलना में बेहतर है?
नोएल विडमर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.