प्रकार या नाम स्थान का नाम 'DbContext' नहीं मिला [बंद]


150

मैं ASP.NET MVC (3) के लिए बहुत नया हूं और विजुअल स्टूडियो में एक बिल्ड एरर को हल करने में कठिन समय लगा रहा हूं:

प्रकार या नाम स्थान का नाम 'DbContext' नहीं मिला (क्या आप एक निर्देश या विधानसभा संदर्भ का उपयोग कर याद कर रहे हैं?)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;

namespace MyProjectName.Models
{   
    public class MachineModel
    {
        // name
        [Required]
        [Display(Name = "Nom de la machine")]
        public string Name { get; set; }

        // IP
        [Required]
        [RegularExpression(@"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",
           ErrorMessage = "Donnez une adresse IPv4 valide.")]
        [Display(Name = "Adresse IP de la machine")]
        public string IP { get; set; }
    }

    public class MachineDbContext : DbContext
    {
        public DbSet<MachineModel> Machines{ get; set; }
    }
}

मुझे जो दो त्रुटियां मिल रही हैं, वे हैं:

  • प्रकार या नाम स्थान का नाम 'DbContext' नहीं मिला (क्या आप एक निर्देश या विधानसभा संदर्भ का उपयोग कर याद कर रहे हैं?)
  • प्रकार या नाम स्थान का नाम 'DbSet' नहीं मिला (क्या आप एक निर्देश या विधानसभा संदर्भ का उपयोग कर याद कर रहे हैं?)

मैं क्या खो रहा हूँ?


20
क्या आपने NuGet का उपयोग करके Entity Framework Code First reference जोड़ा है? संदर्भों को हल करने का यह सबसे आसान तरीका हो सकता है।
एड चैपल

2
ठीक - समाधान एक्सप्लोरर ट्री के तहत मैंने संदर्भ पर राइट क्लिक किया -> लाइब्रेरी पैकेज संदर्भ जोड़ें -> EFCodeFirst -> इंस्टॉल करें। क्या यह आप सुझाव दे रहे थे? इन चरणों का पालन करने के बाद भी मुझे वही समस्या है।
क्रिस

मैंने इस बीच MVC 3 टूल्स को नवीनतम संस्करण में अपडेट किया है, और asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs के बाद एक ट्यूटोरियल प्रोजेक्ट बनाया है । उस परियोजना में, मुझे यह समस्या नहीं है, लेकिन मैं DbContext को अपनी पुरानी परियोजना में स्वीकार करने के लिए, यहां दिए गए सुझावों के बावजूद और नीचे दारिन द्वारा प्राप्त नहीं कर सकता ...
क्रिस

VS2017, EF6, समाधान बंद करें। समाधान फिर से खोलें। यह अब DbContext को ठीक से पहचानता है।
redwards510

1
पैकेज प्रबंधक कंसोल खोलें। टूल्स> नुगेट पैकेज मैनेजर> पैकेज मैनेजर कंसोल चुनें। पैकेज मैनेजर कंसोल में, निम्न कमांड दर्ज करें: इंस्टा-पैकेज EntityFramework
Zahid Hasan

जवाबों:


200

मेरी भी यही समस्या थी। पता चला, आपको EntityFramework.dll संदर्भ (और System.Data.Entity) की आवश्यकता नहीं है।

मैंने अभी इसे MvcMusicStore एप्लिकेशन से खींचा है जिसे आप यहां से डाउनलोड कर सकते हैं: http://mvcmusicstore.codeplex.com/

यह एमवीसी के साथ इकाई ढांचे के कोड-प्रथम का उपयोग करने का एक उपयोगी उदाहरण भी है।


7
यह मेरा अनुभव था; EntityFramework.dll 4.2.0.0 के लिए मौजूद नहीं था, हालांकि vs2010 पैकेज मैनेजर ने दावा किया था कि मैंने 4.2.0.0 इंस्टॉल किया था। Vs2010 में मेरी परियोजना खुली, टूल्स, लाइब्रेरी पैकेज मैनेजर के माध्यम से इंस्टाल कमांड चलाने के साथ , पैकेज मैनेजर कंसोल ने EntityFramework के संदर्भ को स्वचालित रूप से जोड़ा और मेरा बाद का निर्माण सफल रहा। thnx @ शहजाद!
gerryLowry

7
आपकी सहायता के लिए धन्यवाद। मुझे आशा है कि Microsoft एक दिन अपने स्वयं के सॉफ़्टवेयर की स्थापना को अपनी खिड़कियों पर आसान बना देगा! यह आश्चर्यजनक है कि किसी व्यक्ति को यह पता करने के लिए कि उसे कितनी जगहों पर जाना पड़ता है और क्या आवश्यक है। NuGet, MS डाउनलोड साइट, संदेश बोर्ड, किताबें, .... बहुत ही उत्पादक समय वास्तव में।
NoChance

23
आपकी सबसे अच्छी शर्त अपनी परियोजनाओं में इकाई फ्रेमवर्क (एट अल) को खींचने के लिए NuGet (पैकेज मैनेजर) का उपयोग करना है।
23-13 को किंग्डैंगो

2
स्थापना कार्य करने के लिए कुछ समय आपको दृश्य स्टूडियो को पुनरारंभ करने की आवश्यकता है। यह मेरा मामला था।
बेदोइन

3
पैकेज प्रबंधक कंसोल खोलें और पेस्ट करें: इंस्टॉल-पैकेज एंटिटीफ्रेमवर्क
user2862542

71

आपको System.Data.Entityअपनी परियोजना के लिए assebmly को संदर्भित करने या EntityFrameworkNuGet पैकेज स्थापित करने की आवश्यकता है जो आपके लिए सब कुछ सेटअप करेगा।


1
डारिन, क्या आप बता सकते हैं कि यह कैसे होगा?
क्रिस

11
@ क्रिस डिकिन्सन, Referencesप्रोजेक्ट में आइटम पर राइट क्लिक करें और चुनें Add Reference...। फिर .NETटैब में, चयन करें System.Data.Entity। और अगर आप NuGet का उपयोग करना चाहते हैं, Referencesतो आइटम पर राइट क्लिक करें और फिर चयन करें Add Library Package Reference...और ऑनलाइन टैब में, खोजें EntityFramework
डारिन दिमित्रोव

1
मैंने आपके दोनों चरणों का पालन किया, लेकिन समस्या अभी भी बनी हुई है ...
क्रिस

3
क्या आपने EntityFramework स्थापित करने के लिए NuGet का उपयोग किया? यह आपकी समाधान निर्देशिका के साथ एक फ़ोल्डर "पैकेज" बनाता है। आपको इसके अंदर "EntityFramework.4.1.10331.0" फ़ोल्डर मिलेगा। "Libs" फ़ोल्डर में आपको "EntityFramework.dll" मिलेगा। इसके लिए ब्राउज टैब का उपयोग करके संदर्भ लें और उपरोक्त dll चुनें। नीचे मेरा जवाब देखें .. मैंने भी यही किया।
अमित जूल

7
मैंने TOOLS > Library Package Manager > Package Manager ConsoleVS2012 में चयन किया और install-package EntityFrameworkप्रॉम्प्ट पर टाइप किया। पूरी तरह से काम किया।
पीटर ग्लुक डे

17

बस एक त्वरित नोट। यह DbContext है, DBContext नहीं। एक लोअरकेस 'बी' के साथ। मुझे यह पता चला क्योंकि मैं एक ही समस्या थी जब तक कि बुद्धि काम नहीं कर रही थी जब तक कि मैंने पूरा नाम space System.ata.Entity ... और नाम टाइप करने की कोशिश नहीं की थी और अंत में इसने 'b' विकल्प का सुझाव दिया: -

System.Data.Entity.DbContext


1
मैं System.Data.Entity के संबंध में सभी संदर्भों से गुजर रहा हूं, केवल यह पता लगाने के लिए कि समस्या अपरकेस "बी" थी। +1
F0r3v3r-A-N00b

हाँ, यह हल हो गया। बशर्ते "इंस्टॉल-पैकेज EntityFramework" कदम किया गया था। धन्यवाद, +1।
पेसमैन

9

मुझे VS2010 का उपयोग करने में यही समस्या थी। मुझे पता है कि यह वास्तव में एक जवाब नहीं है। मुझे लगा कि यह किसी की मदद कर सकता है। मैंने DBContext के लिए पूरी तरह से योग्य नाम का उपयोग करके इसे हल किया।

के बजाय

public class MachineDbContext : DbContext

मैंनें इस्तेमाल किया

public class MachineDbContext : System.Data.Entity.DbContext

और परियोजना का पुनर्निर्माण किया। अचानक वीएस खुश था, और मैं पूरी तरह से योग्य नाम को हटाने में सक्षम था, और बस डीबीसीनेट का उपयोग करें।


पूरी तरह से योग्य नाम ... v कैसे निर्देशन का उपयोग करके जोड़ना भूल सकता है ....
x-code

8

मैं एक ही मुद्दा था ... पैकेज प्रबंधक कंसोल से EF को स्थापित करना मेरे लिए काम किया

आदेश था: Install-Package EntityFramework


4

यदि आपका संकलक पहचान नहीं करता है

  • System.Data.Entity.Infrastructure
  • DbContext
  • DbSet
  • एट अलि,

सुनिश्चित करो

  1. आपके पास अपनी मशीन पर इकाई फ्रेमवर्क 4.1 स्थापित है;
  2. आपकी .csproj फ़ाइल में, आपके पास निम्न संदर्भ है

    <संदर्भ शामिल करें = "EntityFramework, संस्करण = 4.1.0.0, संस्कृति = तटस्थ, PublicKeyToken = b77a5c561934e089, processorArchitecture = MSIL" />
    

    तत्व के भीतर

    <ItemGroup>
      ...
    </ ItemGroup>
    

    वह घर अन्य विधानसभाओं का संदर्भ देता है।


4

मुझे भी यही समस्या थी..मैंने VS2010 एक्सप्रेस ।।

(नोट: यदि आपको यह समस्या दिखती है तो EntityFramework.dll के संदर्भों को जांचने का प्रयास करें। हो सकता है कि यह गायब हो।)

निम्नलिखित ने इसे मेरे लिए हल कर दिया।

मैंने नवीनतम MVC 3 टूल अपडेट
स्थापित किया फिर मैंने EntityFramework 4.1
या NUGet का उपयोग करके स्थापित किया । विज़ुअल स्टूडियो 2010 एक्सप्रेस (टूल्स-> लाइब्रेरी पैकेज मैनेजर -> लाइब्रेरी पैकेज संदर्भ जोड़ें -> ऑनलाइन का चयन करें -> EntityFramework) से

अजीब बात है कि काम नहीं किया। क्या मुझे मैन्युअल रूप से "EntityFramework.dll" के संदर्भ को
dll के लिए एक खोज करने की कोशिश करनी थी .. यहाँ
"C: \ Program Files (x86) \ संदर्भ असेंबलियों का Microsoft \ Framework.NETFramework" हो। \ v4.0 \ "

यदि आपके पास पहले से ही है .. तो एक '.net' संदर्भ जोड़ें।

नोट: यदि आप NuGet का उपयोग करते हैं, तो यह आपकी समाधान निर्देशिका के साथ एक फ़ोल्डर "पैकेज" बनाता है। आपको "EntityFramework.4.1.10331.0" फ़ोल्डर मिलेगा। इसके अंदर "Libs" फ़ोल्डर आपको "EntityFramework.dll" मिलेगा। ब्राउज़ टैब का उपयोग करके
इसमें संदर्भ जोड़ें और उपरोक्त dll का चयन करें।

उसी के लिए स्नैप करें


4

मैं दृश्य स्टूडियो 2010 एक्सप्रेस का उपयोग कर रहा हूं और C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dllसमस्या को हल करने के लिए एक संदर्भ जोड़ रहा हूं ।


4

यह वास्तव में मदद करता है:

  1. समाधान एक्सप्लोरर में ProjectNAme परियोजना का चयन करें।
  2. टूल्स मेनू से, लाइब्रेरी पैकेज मैनेजर चुनें, जिसमें सब-मेन्यू हो।
  3. उप-मेनू से पैकेज मैनेजर कंसोल चुनें।
  4. कंसोल के PM प्रॉम्प्ट पर इंस्टॉल-पैकेज EntityFramework फिर हिट दर्ज करें।

3

चरण-दर-चरण निर्देशों के लिए, यह नया MVC / EF ट्यूटोरियल श्रृंखला देखें: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an.asp -net-mvc-application ट्यूटोरियल मान लेता है कि आपने नवीनतम MVC 3 टूल अपडेट इंस्टॉल किया है और आपके द्वारा नहीं किए जाने की स्थिति में एक लिंक प्रदान करता है।


3

जब तक आप इसे अपनी परियोजना में शामिल नहीं करते हैं तब तक आपका प्रोजेक्ट EntityFramework वर्गों को हल करने में असमर्थ है। EntityFramework सपोर्ट को जोड़ने के लिए आपको निम्न चरणों का पालन करना होगा: Tools-> Nuget Package Manager -> समाधान के लिए Nuget पैकेज ब्राउज़ करें EntityFramework यह नवीनतम स्थिर EntityFramework संस्करण दिखाता है। वर्तमान में 6.1.3 नवीनतम संस्करण है, इसे चयनित प्रोजेक्ट के लिए इंस्टॉल करें।



2

Visual Studio Express SP1 समाधान एक्सप्लोरर में राइट क्लिक करें> संदर्भ> लाइब्रेरी पैकेज संदर्भ> EntityFramework जोड़ें


2

इसके बजाय CTP5 का उपयोग करें क्योंकि यह एपीआई में कुछ बदलावों के साथ नया संस्करण है। आपको EntityFramework.dll के संदर्भ को जोड़ना होगा जो CTP निर्देशिका में स्थापित है - डिफ़ॉल्ट है: c: \ Program Files \ Microsoft ADO.NET एंटिटी फ्रेमवर्क फ़ीचर CTP5 \ Binaries \ EntityFramework.dll 32bit प्रणाली के लिए। 64 बिट सिस्टम पर इसे प्रोग्राम फाइल्स (x86) में रखा जाएगा।


2

यह मेरे साथ तब हुआ जब मैंने कोड ब्रांच किया। इसे ठीक करने के लिए मैंने Visual Studio में अपनी परियोजना को राइट-क्लिक किया, Nu-get package प्रबंधित किया, EntityFramework की स्थापना रद्द की, फिर इसे फिर से स्थापित किया। समस्या सुलझ गयी


2

मेरे पास बस यह मुद्दा था और किसी भी अन्य समाधान ने मेरे लिए काम नहीं किया। मैं विज़ुअल स्टूडियो 2010 का उपयोग कर रहा हूं और मेरे समाधान में दो परियोजनाएं हैं: UIProject और DataAccessProject। UIProject में DataAccessProject का संदर्भ होता है।

मेरा UIProject .Net फ्रेमवर्क 4 को लक्षित कर रहा था, लेकिन मेरा DataAccessProject किसी कारण से .Net फ्रेमवर्क 3.5 को लक्षित कर रहा था।

  • मैंने .Net फ्रेमवर्क 4 को लक्षित करने के लिए दोनों परियोजनाओं को बदल दिया
  • अनइंस्टॉल किया गया फिर एंटिटी फ्रेमवर्क नुगेट पैकेज को फिर से स्थापित किया।

समस्याओं का हल अब मेरे पास EntityFramework और System.Data.Entity दोनों के संदर्भ हैं


2

मुझे भी यही समस्या थी। मुझे Unitframework के संदर्भ में जोड़ने के बाद "DBContext" को फिर से लिखना पड़ा और इसने समस्या का समाधान किया।
इसका मतलब है कि विज़ुअल स्टूडियो स्वचालित रूप से कक्षा को पहचानने में सक्षम नहीं था और इसके फिर से टाइप होने की प्रतीक्षा करता था। तो इसके लिए सबसे पहले संदर्भ जोड़ना और फिर कोड लागू करना सबसे अच्छा है। वीएस 2013 - अंतिम उपयोग


2

मुझे पहले EntityFramework (अनइंस्टॉल-पैकेज EntityFramework (मामला संवेदनशील नहीं)) की स्थापना रद्द करनी थी, तो इसे फिर से स्थापित करें (इंस्टॉल-पैकेज EntityFramework), PM कंसोल के माध्यम से


1

मुझे यह समस्या थी, उपर्युक्त उत्तर को पढ़ें और Unitframework.ddl डाउनलोड करें लेकिन यह पाया कि यह अल्रेड्ट संदर्भित है। इसलिए मैंने नाम स्थान जोड़ा और समस्या हल हो गई

System.Data.Entity का उपयोग करना;

मैं Visual Studio 2010, SP1 स्थापित कर रहा हूँ


1

संदर्भित किया जा रहा है Unitframework.dll दोनों system.data.entity ने काम किया।


1

मेरे पास एक ही त्रुटि थी लेकिन समस्या सिर्फ मेरे मॉडल के साथ एक आकस्मिक समस्या थी।

मैं आकस्मिक रूप से ...

public class MyModelDBContext : Context
{
 public DBSet<MyModel> MyModels { get; set; }
}

... मॉडल वर्ग के अंदर।


1
उन 3 लाइन वास्तव में कक्षा के अंदर?
नैट-विल्किंस 22

1

वैकल्पिक रास्ते के रूप में आप यहां जा सकते हैं - निर्देश दें कि किसी भी आवश्यक डीएल को कैसे स्थापित किया जाए।

या आप NuGet डाउनलोड कर सकते हैं और इसे VS से प्रबंधित कर सकते हैं


1

अपने संदर्भ को राइट क्लिक करें और NuGet पैकेज को प्रबंधित करने के लिए जाएं, फिर सभी ऑनलाइन चुनें, फिर खोज टेक्स्टबॉक्स प्रकार Entity फ्रेमवर्क में NuGet पैकेज स्रोत और इसे स्थापित करें।


1

1) सभी परियोजनाओं से एंटिटी फ्रेमवर्क को अनइंस्टॉल करना

2) विज़ुअल स्टूडियो को पुनरारंभ करें

3) सभी आवश्यक परियोजनाओं को पुनः स्थापित करना

और इसने काम करना शुरू कर दिया


1

ऐसा कोई मामला हो सकता है जहाँ आप अपनी ज़रूरत की सभी चीज़ों का संदर्भ देते हैं और आप D12Context क्लास पर F12 दबाकर डेफ़िनिशन पर भी जा सकते हैं जो आपको System.Data.Entity नाम स्थान पर ले जाती है लेकिन फिर भी आपको यह नॉटी कंपाइलर चेतावनी मिलती है। सुनिश्चित करें कि आपके प्रोजेक्ट का टारगेट फ्रेमवर्क और उस एंटिटी फ्रेमवर्क संस्करण का आप मैच का उपयोग कर रहे हैं। प्रोजेक्ट-> गुण-> एप्लिकेशन टैब पर जाएं। टारगेट फ्रेमवर्क को बदलें (यह बिल्कुल नहीं कह सकते कि कौन सा, परीक्षण और त्रुटि मदद करेगा।)। केवल मेरे दो सेंट्स।


1

मुझे भी कई बार इस मुद्दे से चिढ़ होती है और आखिर में solution.Go पता चलता है। edmx file-> डेटाबेस से अपडेट मॉडल-> Refresh-> समाप्त करें। स्वच्छ समाधान-> समाधान का पुनर्निर्माण



0

जैसे दूसरों ने सुझाव दिया है:

  1. सही संदर्भ और निर्देश जोड़ें। लेकिन यह अभी भी काम नहीं करता है? हो सकता है कि आपके पास भी यही समस्या हो:

नीचे देखें और देखें कि क्या आप मुझे बता सकते हैं कि क्या गलत है:

public class PanelLengthContext : DBContext { } ??!

सुनिश्चित करें कि कक्षा का नाम गलत नहीं है - (केस सेंसिटिविटी)!

  • DbContext सही वर्तनी है।
  • यह इस प्रकार है:
  • अक्षर विन्यास की जाँच। अपने जीवन के 20 मिनट बर्बाद मत करो जैसे मैंने किया।public class PanelLengthContext : DbContext {}

HTH


0

आपके पास मेरे पास एक ही मुद्दा है, मैं इसे नियंत्रक वर्ग में लागू करने में असमर्थ हूं, जबकि यह काम करता है जब मैंने इसे मॉडल वर्ग में रखा। इन कोड्स को अपने नियंत्रक वर्ग के शीर्ष पर जोड़ें

 using TimeSheetManagementSystem.Data;
 using Microsoft.Extensions.Configuration;
 using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore;
 using Newtonsoft.Json;

0

मैंने एक ही मुद्दे का सामना किया है और फिर मैंने नाम स्थान जोड़ा है

using Practiceusingentityframework.Models;

जोड़ने के बाद यह ठीक काम कर रहा है

कोशिश करें इससे आपको अपनी समस्या को हल करने में मदद मिल सकती है

और इससे पहले कि नुगेट प्रबंधक से इकाई रूपरेखा स्थापित करें

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