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?
Antworten:
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.
quelle
Sie müssen den
System.Data.Entity
assebmly auf Ihr Projekt verweisen oder dasEntityFramework
NuGet-Paket installieren, das alles für Sie einrichtet .quelle
References
Element im Projekt und wählen SieAdd Reference...
. Wählen Sie dann auf der.NET
Registerkarte ausSystem.Data.Entity
. Wenn Sie NuGet verwenden möchten, klicken Sie mit der rechten Maustaste auf dasReferences
Element und wählen SieAdd Library Package Reference...
und suchen Sie auf der Registerkarte Online nachEntityFramework
.TOOLS > Library Package Manager > Package Manager Console
in VS2012 ausgewählt undinstall-package EntityFramework
an der Eingabeaufforderung eingegeben . Hat perfekt funktioniert.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
quelle
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
ich benutzte
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.
quelle
Ich hatte das gleiche Problem ... Die Installation des EF über die Package Manager-Konsole hat bei mir funktioniert
Der Befehl war:
Install-Package EntityFramework
quelle
Wenn Ihr Compiler nicht erkennt
Stelle sicher
In Ihrer .csproj-Datei haben Sie die folgende Referenz
innerhalb des Elements
das enthält Verweise auf andere Versammlungen.
quelle
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.
quelle
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.dll
das Problem zu lösen.quelle
Das hilft wirklich praktisch:
quelle
Eine schrittweise Anleitung finden Sie in dieser neuen MVC / EF-Lernserie: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp -net-mvc-application In diesem Lernprogramm wird davon ausgegangen, dass Sie das neueste MVC 3 Tools-Update installiert haben, und es wird ein Link bereitgestellt, falls Sie dies nicht getan haben.
quelle
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.
quelle
Laden Sie http://www.dll-found.com/download/e/EntityFramework.dll herunter
Fügen Sie es ein (für x86)
Klicken Sie dann mit der rechten Maustaste auf Projekt -> Referenz hinzufügen -> wählen Sie EntityFramework
Bingo......
quelle
Visual Studio Express SP1 Klicken Sie mit der rechten Maustaste in Projektmappen-Explorer> Verweise> Bibliothekspaketreferenz hinzufügen> EntityFramework
quelle
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.
quelle
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
quelle
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.
Probleme gelöst. Jetzt habe ich Verweise auf EntityFramework und System.Data.Entity
quelle
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
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)
quelle
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
quelle
Nachdem auf entityframework.dll verwiesen wurde, funktionierten beide system.data.entity.
quelle
Ich hatte den gleichen Fehler, aber das Problem war nur ein versehentliches Problem mit meinem Modell.
Ich habe versehentlich ...
... innerhalb der Modellklasse.
quelle
Als Alternative können Sie HIER gehen - Anweisungen zur Installation einer erforderlichen DLL.
Oder Sie können NuGet herunterladen und von VS verwalten
quelle
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.
quelle
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
quelle
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.
quelle
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
quelle
Sie können die Paketmanager-Konsole ausprobieren
PM> EntityFrameWork \ enable-migrations
quelle
Wie die anderen vorgeschlagen haben:
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.public class PanelLengthContext : DbContext {}
HTH
quelle
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
quelle
Ich habe das gleiche Problem und dann habe ich den Namespace hinzugefügt
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
quelle