it-swarm.com.de

Der Typ- oder Namespace-Name 'DbContext' wurde nicht gefunden

Ich bin sehr neu in ASP.NET MVC (3) und habe Schwierigkeiten, einen Build-Fehler in Visual Studio zu beheben:

Der Typ- oder Namespace-Name 'DbContext' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assemblyreferenz?)

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 erhalte, sind:

  • Der Typ- oder Namespace-Name 'DbContext' konnte nicht gefunden werden (are fehlt eine using-Direktive oder eine Assembly-Referenz?) 
  • Der Typ- oder Namespace-Name 'DbSet' Konnte nicht gefunden werden (fehlt Ihnen Eine using-Direktive oder eine Assemblyreferenz?)

Was vermisse ich?

135
Chris

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

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

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

192
Shaz

Sie müssen die System.Data.Entity-Assembly auf Ihr Projekt verweisen oder das EntityFramework NuGet-Paket installieren, das alles für Sie einrichten wird.

64
Darin Dimitrov

Nur ein kurzer Hinweis. Es ist DbContext, nicht DBContext. mit einem Kleinbuchstaben 'B'. Ich entdeckte dies, weil ich das gleiche Problem hatte, während Intelesense nicht funktionierte, bis ich den vollständigen Namenraum System.Data.Entity ... und den Namen eingegeben hatte. Schließlich wurde die Kleinbuchstabe 'b' vorgeschlagen:

System.Data.Entity.DbContext

12
John Thompson

Ich hatte das gleiche Problem mit VS2010. Ich weiß, dass das nicht wirklich eine Antwort ist. Ich dachte nur, es könnte jemandem helfen ... Ich habe es gelöst, 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. 

9
cab0

Ich hatte das gleiche Problem ... Die Installation der EF von der Package Manager Console funktionierte für mich

der Befehl lautete: Install-Package EntityFramework

7
Felipe Skinner

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.)

Folgendes hat es für mich gelöst.

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

Seltsamerweise funktionierte das nicht .. Also musste ich manuell einen Verweis auf "EntityFramework.dll" hinzufügen.
Versuchen Sie, eine Suche nach der DLL durchzuführen
"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, erstellt es einen Ordner "Packages" neben Ihrem Solution-Verzeichnis . Sie finden darin den Ordner "EntityFramework.4.1.10331.0". Im Ordner "Libs" finden Sie " EntityFramework.dll ".
Verweis hinzufügen über die Registerkarte "Durchsuchen" auswählen und die obige DLL auswählen.

Snap for the same

4
Amitd

Ich verwende Visual Studio 2010 express und füge einen Verweis auf C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll hinzu, der das Problem gelöst hat.

3
ASHISH

Wenn Ihr Compiler das 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, processorArchitecture = MSIL" />
    

    innerhalb des Elements

     <ItemGroup> 
     ...
     </ ItemGroup> 
    

    das beherbergt Verweise auf andere Baugruppen.

3
user669226

Schrittweise Anweisungen finden Sie in dieser neuen MVC/EF-Lernprogrammreihe: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model- for-an-asp-net-mvc-application Das Lernprogramm setzt voraus, dass Sie das neueste MVC 3 Tools-Update installiert haben, und bietet einen Link, falls dies nicht der Fall ist.

3
tdykstra

Das hilft wirklich praktisch:

  1. Wählen Sie das ProjectNAme-Projekt im Projektmappen-Explorer aus.
  2. Wählen Sie im Menü "Tools" den Befehl Library Package Manager, der über ein Untermenü "" Verfügt.
  3. Wählen Sie im Untermenü die Option Package Manager Console.
  4. Bei der Konsole PM Eingabeaufforderung geben Sie Installationspaket EntityFramework und dann Die Eingabetaste ein.
3
BehranG BinA

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

2
John

Download http://www.dll-found.com/download/e/EntityFramework.dll

Einfügen in (für x86) 

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

Dann Rechtsklick Projekt anklicken -> Referenz hinzufügen -> EntityFramework auswählen

Bingo......

2
Sanoop

Dies ist mir passiert, als ich den Code verzweigte. Um das Problem zu beheben, habe ich in Visual Studio mit der rechten Maustaste auf mein Projekt geklickt, Nuget-Pakete verwalten ausgewählt, EntityFramework deinstalliert und es anschließend neu installiert. Problem gelöst

2
Neil

ich hatte das gleiche Problem. Ich musste "DBContext" neu schreiben, nachdem ich einen Verweis auf Entityframework hinzugefügt hatte, und das Problem wurde behoben.
Dies bedeutet, dass Visual Studio die Klasse nicht automatisch erkennen konnte und auf die erneute Eingabe wartete. Daher ist es am besten, zuerst eine Referenz hinzuzufügen und dann Code zu implementieren. VS 2013 - ultimativ verwendet

2
user2169532

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

2
mesteru_vali

Ihr Projekt kann EntityFramework-Klassen nicht auflösen, bis Sie es nicht zu Ihrem Projekt hinzugefügt haben. Um EntityFramework-Unterstützung hinzuzufügen, müssen Sie die folgenden Schritte ausführen: Tools-> Nuget Package Manager -> Nuget-Paket für Lösung verwalten Durchsuchen von EntityFrameworkEs zeigt die aktuellste stabile EntityFramework-Version . Derzeit 6.1.3 neueste Version Installieren Sie es für das ausgewählte Projekt.

2
Shubham Tiwari

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 eine Referenz auf das DataAccessProject.

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

  • Ich habe beide Projekte auf das .Net Framework 4 umgestellt 
  • Das Entity Framework NuGet Package wurde deinstalliert und anschließend erneut installiert.

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

2
MoMo

Ich musste zuerst EntityFramework deinstallieren (Uninstall-package EntityFramework (anscheinend nicht zwischen Groß- und Kleinschreibung unterscheiden)) und dann über die PM - Konsole erneut installiert (Install-package EntityFramework)

2
Mpilo Z

Klicken Sie mit der rechten Maustaste auf Ihre Referenz, und verwalten Sie die NuGet-Pakete. Wählen Sie dann online alle und dann die NuGet-Paketquelle im Suchfeld Entity Framework aus, und installieren Sie sie. 

1
kidistB

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

Ich habe aus Versehen ...

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

... innerhalb der Modellklasse.

1
Jason Geiger

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

using System.Data.Entity;

Ich verwende Visual Studio 2010, SP1, das installiert ist

1) Deinstallation von Entity Framework von All projects

2) Starten Sie Visual Studio neu

3) Neuinstallation in allen erforderlichen Projekten 

und es fing an zu arbeiten  

1
Moji

Als Alternative können Sie HIER - Anweisungen zum Installieren der erforderlichen DLL aufrufen.

Oder Sie können NuGet herunterladen und von VS aus verwalten

1
gbk

Ich werde auch oft von diesem Problem verärgert und finde schließlich die Lösung

1
Aayush Verma

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

1

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

1
meol

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 stelle. Fügen Sie diese Codes oben in Ihre Controller-Klasse ein

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

Wie die anderen vorgeschlagen haben:

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

Schauen Sie unten und schauen 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).

  • DbContext ist die korrekte Schreibweise.
  • so sollte es aussehen:
  • prüfe die Rechtschreibung. Verschwenden Sie nicht 20 Minuten Ihres Lebens wie ich. public class PanelLengthContext : DbContext {}

HTH

0
BKSpurgeon

Ich habe dasselbe Problem gesehen und dann habe ich den Namespace hinzugefügt

using Practiceusingentityframework.Models;

Nach dem Hinzufügen funktioniert es gut

Versuchen Sie dies, um das Problem zu lösen

und davor installieren Sie das Entitätsframework von Nuget Manager

0
Aravindhan R

sie können die Paket-Manager-Konsole ausprobieren

PM> EntityFrameWork\enable-migrations

0
Michael Felina