Der Typ- oder Namespace-Name 'DbContext' konnte nicht gefunden werden [geschlossen]

150

Ich bin SEHR neu in ASP.NET MVC (3) und habe Schwierigkeiten, einen Buildfehler in Visual Studio zu beheben:

Der Typ- oder Namespace-Name 'DbContext' wurde nicht gefunden (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)

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; }
    }
}

Die zwei Fehler, die ich bekomme, sind:

  • Der Typ- oder Namespace-Name 'DbContext' wurde nicht gefunden (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)
  • Der Typ- oder Namespace-Name 'DbSet' wurde nicht gefunden (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)

Was vermisse ich?

Chris
quelle
20
Haben Sie die Entity Framework Code First-Referenz mit NuGet hinzugefügt? Dies ist möglicherweise der einfachste Weg, um Referenzen aufzulösen.
Ed Chapel
2
ok - unter dem Projektmappen-Explorer-Baum habe ich mit der rechten Maustaste auf Referenzen -> Bibliothekspaketreferenz hinzufügen -> EFCodeFirst -> Installieren geklickt. Haben Sie das vorgeschlagen? Nachdem ich diese Schritte ausgeführt habe, habe ich immer noch das gleiche Problem.
Chris
Ich habe inzwischen die MVC 3-Tools auf die neueste Version aktualisiert und ein Tutorial-Projekt erstellt, das asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs folgt . In diesem Projekt habe ich dieses Problem nicht, aber ich kann nicht erreichen, dass DbContext in meinem älteren Projekt akzeptiert wird, trotz der hier und von Darin unten gemachten Vorschläge ...
Chris
VS2017, EF6, Schließen Sie die Lösung. Lösung erneut öffnen. DbContext wird jetzt ordnungsgemäß erkannt.
redwards510
1
Öffnen Sie die Package Manager-Konsole. Wählen Sie Extras> NuGet Package Manager> Package Manager-Konsole. Geben Sie in der Package Manager-Konsole den folgenden Befehl ein: install-package EntityFramework
Zahid Hasan

Antworten:

200

Ich hatte das gleiche Problem. Es stellt sich heraus, dass Sie die Referenz EntityFramework.dll benötigen (und nicht System.Data.Entity).

Ich habe es gerade aus der MvcMusicStore-Anwendung gezogen, die Sie herunterladen können von: http://mvcmusicstore.codeplex.com/

Es ist auch ein nützliches Beispiel für die Verwendung von Entity Framework Code-First mit MVC.

Shaz
quelle
7
das war meine Erfahrung; Die EntityFramework.dll für 4.2.0.0 war nicht vorhanden, obwohl der vs2010-Paketmanager behauptete, ich hätte 4.2.0.0 installiert. Wenn mein Projekt in vs2010 geöffnet ist und der Installationsbefehl über Tools, Library Package Manager und Package Manager Console ausgeführt wird, wurde der Verweis auf EntityFramework automatisch hinzugefügt, und mein nachfolgender Build war erfolgreich. Danke @Shahzad!
GerryLowry
7
Danke für Ihre Hilfe. Ich hoffe, Microsoft würde eines Tages die Installation der eigenen Software unter Windows vereinfachen! Es ist erstaunlich, an wie viele Orte man gehen muss, um herauszufinden, was benötigt wird und wie sie alle zusammenpassen. NuGet, MS Download-Site, Message Boards, Bücher, ... in der Tat sehr produktive Zeit.
NoChance
23
Am besten verwenden Sie NuGet (Paketmanager), um Entity Framework (et al.) In Ihre Projekte zu integrieren.
Kingdango
2
Manchmal müssen Sie Visual Studio neu starten, damit die Installation funktioniert. Das war mein Fall.
Beduinen
3
Öffnen Sie die Package Manager-Konsole und fügen Sie sie ein: Install-Package EntityFramework
user2862542
71

Sie müssen den System.Data.Entityassebmly auf Ihr Projekt verweisen oder das EntityFrameworkNuGet-Paket installieren, das alles für Sie einrichtet .

Darin Dimitrov
quelle
1
Darin, kannst du erklären, wie man das machen würde?
Chris
11
@ Chris Dickinson, klicken Sie mit der rechten Maustaste auf das ReferencesElement im Projekt und wählen Sie Add Reference.... Wählen Sie dann auf der .NETRegisterkarte aus System.Data.Entity. Wenn Sie NuGet verwenden möchten, klicken Sie mit der rechten Maustaste auf das ReferencesElement und wählen Sie Add Library Package Reference...und suchen Sie auf der Registerkarte Online nach EntityFramework.
Darin Dimitrov
1
Ich habe beide Schritte befolgt, aber das Problem besteht weiterhin ...
Chris
3
Haben Sie NuGet verwendet, um EntityFramework zu installieren? Es erstellt einen Ordner "Pakete" neben Ihrem Lösungsverzeichnis. Sie finden den Ordner "EntityFramework.4.1.10331.0" darin. Im Ordner "Libs" finden Sie "EntityFramework.dll". Fügen Sie auf der Registerkarte "Durchsuchen" einen Verweis darauf hinzu und wählen Sie die obige DLL aus. siehe meine Antwort unten .. ich habe das gleiche getan.
Amitd
7
Ich habe TOOLS > Library Package Manager > Package Manager Consolein VS2012 ausgewählt und install-package EntityFrameworkan der Eingabeaufforderung eingegeben . Hat perfekt funktioniert.
Peter Gluck
17

Nur eine schnelle Anmerkung. Es ist DbContext, nicht DBContext. dh mit einem Kleinbuchstaben 'B'. Ich habe dies entdeckt, weil ich das gleiche Problem hatte, während Intelesense nicht funktionierte, bis ich versuchte, den vollständigen Namensraum System.Data.Entity ... und den Namen einzugeben, und schließlich die Kleinbuchstabenoption 'b' vorgeschlagen wurde: -

System.Data.Entity.DbContext

John Thompson
quelle
1
Ich habe alle Referenzen zu System.Data.Entity durchgesehen, nur um festzustellen, dass das Problem der Großbuchstabe "B" war. +1
F0r3v3r-A-N00b
Ja, das hat es gelöst. Vorausgesetzt, der Schritt "Install-Package EntityFramework" wurde ausgeführt. Danke, +1.
Paceman
9

Ich hatte das gleiche Problem mit VS2010. Ich weiß, dass dies keine wirkliche Antwort ist. Ich dachte nur, es könnte jemandem helfen. Ich habe es behoben, indem ich den vollständig qualifizierten Namen für DBContext verwendet habe.

Anstatt

public class MachineDbContext : DbContext

ich benutzte

public class MachineDbContext : System.Data.Entity.DbContext

und das Projekt neu aufgebaut. Plötzlich war VS glücklich und ich konnte sogar den vollständig qualifizierten Namen entfernen und einfach DBContext verwenden.

cab0
quelle
voll qualifizierter Name ... wie kann ich vergessen, mit Direktive hinzuzufügen ....
X-Code
8

Ich hatte das gleiche Problem ... Die Installation des EF über die Package Manager-Konsole hat bei mir funktioniert

Der Befehl war: Install-Package EntityFramework

Felipe Skinner
quelle
4

Wenn Ihr Compiler nicht erkennt

  • System.Data.Entity.Infrastructure
  • DbContext
  • DbSet
  • et alii,

Stelle sicher

  1. Sie haben Entity Framework 4.1 auf Ihrem Computer installiert.
  2. In Ihrer .csproj-Datei haben Sie die folgende Referenz

    <Reference Include = "EntityFramework, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089, processArchitecture = MSIL" />
    

    innerhalb des Elements

    <ItemGroup>
      ...
    </ ItemGroup>
    

    das enthält Verweise auf andere Versammlungen.

user669226
quelle
4

Ich hatte das gleiche Problem .. Ich habe VS2010 Express ..

(Hinweis: Wenn dieses Problem auftritt, überprüfen Sie die Verweise auf EntityFramework.dll. Möglicherweise fehlt es.)

Das Folgende hat es für mich gelöst.

Ich habe das neueste MVC 3 Tools Update
installiert und dann EntityFramework 4.1
oder NUGet installiert . von mit Visual Studio 2010 Express (Extras-> Bibliothekspaket-Manager -> Bibliothekspaket-Referenz hinzufügen -> Online auswählen -> EntityFramework)

Seltsamerweise hat das nicht funktioniert. Also musste ich manuell einen Verweis auf "EntityFramework.dll" hinzufügen und
versuchen, eine Suche nach der DLL durchzuführen. Kann hier sein.
"C: \ Programme (x86) \ Referenzassemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ "

Wenn Sie es bereits haben, fügen Sie einfach eine '.net'-Referenz hinzu.

Hinweis: Wenn Sie NuGet verwenden, wird neben Ihrem Lösungsverzeichnis ein Ordner "Pakete" erstellt. Sie finden den Ordner "EntityFramework.4.1.10331.0" darin. Im Ordner "Libs" finden Sie "EntityFramework.dll".
Fügen Sie auf der Registerkarte Durchsuchen einen Verweis darauf hinzu und wählen Sie die obige DLL aus.

Schnappen Sie für das gleiche

Amitd
quelle
4

Ich verwende Visual Studio 2010 Express und füge einen Verweis hinzu, um C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dlldas Problem zu lösen.

ASCHISCH
quelle
4

Das hilft wirklich praktisch:

  1. Wählen Sie im Projektmappen-Explorer das ProjectNAme-Projekt aus.
  2. Wählen Sie im Menü Extras die Option Bibliothekspaket-Manager mit einem Untermenü.
  3. Wählen Sie im Untermenü die Option Package Manager Console.
  4. Geben Sie an der PM-Eingabeaufforderung der Konsole das Installationspaket EntityFramework ein und drücken Sie die Eingabetaste.
BehranG BinA
quelle
3

Ihr Projekt kann EntityFramework-Klassen erst auflösen, wenn Sie es nicht zu Ihrem Projekt hinzugefügt haben. Um die EntityFramework-Unterstützung hinzuzufügen, müssen Sie die folgenden Schritte ausführen: Tools-> Nuget Package Manager -> Verwalten des Nuget-Pakets für die Lösung Durchsuchen von EntityFramework Es wird die neueste stabile EntityFramework-Version angezeigt. Derzeit ist 6.1.3 die neueste Version. Installieren Sie es für das ausgewählte Projekt.

Shubham Tiwari
quelle
3

Laden Sie http://www.dll-found.com/download/e/EntityFramework.dll herunter

Fügen Sie es ein (für x86)

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\

Klicken Sie dann mit der rechten Maustaste auf Projekt -> Referenz hinzufügen -> wählen Sie EntityFramework

Bingo......

Sanoop
quelle
2

Visual Studio Express SP1 Klicken Sie mit der rechten Maustaste in Projektmappen-Explorer> Verweise> Bibliothekspaketreferenz hinzufügen> EntityFramework

mesteru_vali
quelle
2

Verwenden Sie stattdessen CTP5 , eine neuere Version mit einigen Änderungen in der API. Sie müssen einen Verweis auf EntityFramework.dll hinzufügen, der im CTP-Verzeichnis installiert ist. Die Standardeinstellung lautet: c: \ Programme \ Microsoft ADO.NET Entity Framework-Funktion CTP5 \ Binaries \ EntityFramework.dll für 32-Bit-Systeme. Auf einem 64-Bit-System wird es in Programmdateien (x86) abgelegt.

John
quelle
2

Dies passierte mir, als ich Code verzweigte. Um das Problem zu beheben, habe ich in Visual Studio mit der rechten Maustaste auf mein Projekt geklickt, Nu-get-Pakete verwalten ausgewählt, EntityFramework deinstalliert und dann erneut installiert. Problem gelöst

Neil
quelle
2

Ich hatte gerade dieses Problem und keine der anderen Lösungen funktionierte für mich. Ich verwende Visual Studio 2010 und habe zwei Projekte in meiner Lösung: UIProject und DataAccessProject. Das UIProject hat einen Verweis auf das DataAccessProject.

Mein UIProject zielte auf das .NET Framework 4 ab, aber mein DataAccessProject zielte aus irgendeinem Grund auf das .Net Framework 3.5.

  • Ich habe beide Projekte auf .NET Framework 4 geändert
  • Deinstalliert und anschließend das Entity Framework NuGet-Paket erneut installiert.

Probleme gelöst. Jetzt habe ich Verweise auf EntityFramework und System.Data.Entity

MoMo
quelle
2

Ich hatte das gleiche Problem. Ich musste "DBContext" neu schreiben, nachdem ich einen Verweis auf entityframework hinzugefügt hatte, und es löste das Problem.
Dies bedeutet, dass Visual Studio die Klasse nicht automatisch erkennen konnte und darauf wartete, dass sie erneut eingegeben wurde. Daher ist es am besten, zuerst eine Referenz hinzuzufügen und dann Code zu implementieren. VS 2013 - ultimativ gebraucht


quelle
2

Ich musste zuerst EntityFramework deinstallieren (EntityFramework-Paket deinstallieren (anscheinend nicht zwischen Groß- und Kleinschreibung unterscheiden)) und es dann über die PM-Konsole erneut installieren (EntityFramework-Paket installieren)

Mpilo Z.
quelle
1

Ich hatte dieses Problem, las die obige Antwort und lud die Datei entityframework.ddl herunter, stellte jedoch fest, dass bereits darauf verwiesen wird. Also habe ich den Namespace hinzugefügt und das Problem wurde gelöst

using System.Data.Entity;

Ich verwende Visual Studio 2010, SP1 installiert

Muhammad Waqas Iqbal
quelle
1

Nachdem auf entityframework.dll verwiesen wurde, funktionierten beide system.data.entity.

Meol
quelle
1

Ich hatte den gleichen Fehler, aber das Problem war nur ein versehentliches Problem mit meinem Modell.

Ich habe versehentlich ...

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

... innerhalb der Modellklasse.

Jason Geiger
quelle
1
Diese 3 Zeilen tatsächlich innerhalb der Klasse?
Nate-Wilkins
1

Als Alternative können Sie HIER gehen - Anweisungen zur Installation einer erforderlichen DLL.

Oder Sie können NuGet herunterladen und von VS verwalten

gbk
quelle
1

Klicken Sie mit der rechten Maustaste auf Ihre Referenz und gehen Sie zum Verwalten von NuGet-Paketen. Wählen Sie dann Alle online und dann die NuGet-Paketquelle im Suchtextfeld Entity Framework aus und installieren Sie sie.

kidistB
quelle
1

1) Deinstallation von Entity Framework von All Projekten

2) Starten Sie Visual Studio neu

3) Neuinstallation aller erforderlichen Projekte

und es fing an zu arbeiten

Moji
quelle
1

Es kann vorkommen, dass Sie auf alles verweisen, was Sie benötigen, und dass Sie sogar zur Definition wechseln können, indem Sie in der DbContext-Klasse F12 drücken, um zum System.Data.Entity-Namespace zu gelangen. Sie erhalten jedoch weiterhin diese böse Compiler-Warnung. Stellen Sie sicher, dass das Zielframework Ihres Projekts und das der von Ihnen verwendeten Entity Framework-Version übereinstimmen. Gehen Sie zu Projekt-> Eigenschaften-> Registerkarte Anwendung. Ändern Sie das Ziel-Framework (kann nicht genau sagen, zu welchem, Versuch und Irrtum helfen.). Nur meine zwei Cent.

Mikayil Abdullayev
quelle
1

Ich ärgere mich auch oft über dieses Problem und finde endlich die Lösung. Gehe zu edmx file-> Update Model from Database-> Refresh-> Finish. Lösung reinigen-> Lösung neu erstellen

Aayush Verma
quelle
0

Sie können die Paketmanager-Konsole ausprobieren

PM> EntityFrameWork \ enable-migrations

Michael Felina
quelle
0

Wie die anderen vorgeschlagen haben:

  1. Fügen Sie die richtigen Verweise und Anweisungen hinzu. Aber es funktioniert immer noch nicht? Vielleicht haben Sie das gleiche Problem wie ich:

Schauen Sie unten nach und sehen Sie, ob Sie mir sagen können, was falsch ist:

public class PanelLengthContext : DBContext { } ??!

Stellen Sie sicher, dass der Klassenname nicht falsch geschrieben ist - (Groß- und Kleinschreibung beachten)!

  • DbContext ist die richtige Schreibweise.
  • So sollte es aussehen:
  • Prüfe die Rechtschreibung. Verschwende nicht 20 Minuten deines Lebens wie ich.public class PanelLengthContext : DbContext {}

HTH

BKSpurgeon
quelle
0

Ich habe das gleiche Problem wie Sie. Ich kann es nicht in der Controller-Klasse implementieren, solange es funktioniert, wenn ich es in die Modellklasse einfüge. Fügen Sie diese Codes oben in Ihrer Controller-Klasse hinzu

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

Ich habe das gleiche Problem und dann habe ich den Namespace hinzugefügt

using Practiceusingentityframework.Models;

Nach dem Hinzufügen funktioniert es einwandfrei

Versuchen Sie dies, um Ihr Problem zu lösen

und davor installieren Sie das Entity Framework von Nuget Manager

Aravindhan R.
quelle