Le nom du type ou du namespace 'DbContext' n'a pas pu être trouvé [fermé]
je suis très nouveau à ASP.NET MVC (3) et am ayant du mal à résoudre une erreur de construction dans Visual Studio:
le type ou le nom D'espace de noms 'DbContext' n'a pas pu être trouvé (vous manque-t-il une directive d'utilisation ou une référence d'assemblage?)
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; }
}
}
les deux erreurs que j'obtiens sont:
- le type ou le nom d'espace de noms "DbContext" n'a pas pu être trouvé (sont vous manquez une directive d'utilisation ou une référence de l'assemblage?)
- le type ou le nom d'espace de noms "DbSet" n'a pas pu être trouvée (êtes-vous manque une directive using ou une référence de l'assemblage?)
Qu'est-ce que je rate?
30 réponses
j'ai eu le même problème. Il s'avère que tu as besoin du cadre D'habilitation.dll référence (et non pas système.Données.Entité.)
je viens de le tirer de L'application MvcMusicStore que vous pouvez télécharger à partir de: http://mvcmusicstore.codeplex.com /
c'est aussi un exemple utile de la façon d'utiliser le code de cadre d'entité-d'abord avec MVC.
vous devez référencer le System.Data.Entity
assebmly à votre projet ou installer le paquet NuGet EntityFramework
qui va tout configurer pour vous.
juste une petite note. C'est DbContext, pas DBContext. c'est à dire avec une minuscule "B". J'ai découvert cela parce que j'avais le même problème alors que intelesense ne fonctionnait pas jusqu'à ce que j'ai essayé de taper le système d'espace de nom complet.Données.Entité... et le nom et finalement il a suggéré l'option en minuscules 'b': -
Système.Données.Entité.DbContext
j'ai eu le même problème en utilisant VS2010. Je sais que ce n'est pas vraiment une réponse. J'ai juste pensé qu'il pourrait aider quelqu'un. Je l'ai résolu en utilisant le nom entièrement qualifié pour DBContext.
au lieu de
public class MachineDbContext : DbContext
j'ai utilisé
public class MachineDbContext : System.Data.Entity.DbContext
et reconstruit le projet. Tout à coup VS était content, et j'ai même été capable de supprimer le nom entièrement qualifié, et juste utiliser DBContext.
j'ai eu le même problème... Installer le Fe de la Console de gestionnaire de paquets a fonctionné pour moi
la commande était: Install-Package EntityFramework
j'ai eu le même problème..J'ai VS2010 express..
(Note: Si vous voyez ce problème, essayez de vérifier les références à Entitefram Framework.DLL. . Peut-être qu'il est manquant.)
résolu pour moi.
j'ai installé la dernière MVC 3 Outils de mise à Jour
puis j'ai installé Entitefram Framework 4.1
ou à l'aide de
NUGet ie. de avec Visual Studio 2010 Express
(Outils->Gestionnaire de paquets de Bibliothèque -> Ajouter un Paquet de bibliothèque de référence -> Sélectionnez en Ligne -> EntityFramework)
étrangement cela n'a pas fonctionné.donc j'ai dû ajouter manuellement une référence à "Entityfram Framework.dll "
essayez de faire une recherche de la dll ..peut être ici
"C:\Program fichiers (x86)\reference Assemblies\Microsoft\Framework.Netfram framework\v4.151910920"
Si vous l'avez déjà..il suffit d'ajouter une '.net de référence.
Note: Si vous utilisez NuGet ,il crée un dossier" paquets " le long de votre répertoire Solution.
Vous trouverez le " Entitefram Framework.4.1.10331.0" dossier à l'intérieur d'elle.Dans le dossier" Libs " vous trouverez
"Entitefram framework.DLL. "
ajouter une référence à elle en utilisant L'onglet Parcourir et sélectionner la dll ci-dessus.
pour des instructions étape par étape, voir cette nouvelle série de tutoriels MVC / EF: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application Le tutoriel suppose que vous avez installé la dernière mise à jour des outils MVC 3 et fournit un lien au cas où vous ne l'auriez pas fait.
si votre compilateur ne reconnaît pas
- du Système.Données.Entité.Infrastructure
- DbContext
- DbSet
- et alii,
assurez-vous
- vous avez Entity Framework 4.1 installé sur votre machine;
-
dans votre .fichier csproj, vous avez la référence suivante
<Reference Include="EntityFramework, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
dans l'élément
<ItemGroup> ... </ItemGroup>
"151920920 qui contient des références à d'autres assemblées.
J'utilise Visual Studio 2010 express et l'ajout d'une référence à C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll
a résolu le problème.
cela aide vraiment pratique:
- sélectionnez le projet ProjectNAme dans Solution Explorer.
- dans le Menu Outils, choisissez Library Package Manager qui a un sous-menu.
- dans le sous-menu, choisissez Package Manager Console.
- à L'invite PM de la console tapez install-package Entitifram Framework then appuyez sur entrée.
Visual Studio Express SP1 Clic droit dans L'Explorateur de solutions > références > ajouter référence de paquet de bibliothèque > Entitefram Framework
Utiliser CTP5 au lieu de cela elle est plus récente version avec quelques modifications dans l'API. Vous devez ajouter une référence à Entitefram Framework.dll qui est installé dans le répertoire CTP - default est: c:\Program fichiers \ Microsoft ADO.NET Entity Framework Feature CTP5\binaires\Entitefram Framework.dll pour système 32bit. Sur le système 64bit il sera placé dans les fichiers de programme (x86).
cela m'est arrivé quand j'ai ramifié le code. Pour le corriger, j'ai cliqué sur mon projet dans Visual Studio, j'ai choisi Gérer les paquets Nu-get, j'ai désinstallé Entitefram Framework, puis je l'ai réinstallé. Problème résolu
je viens d'avoir ce problème et aucune des autres solutions n'a fonctionné pour moi. J'utilise Visual Studio 2010 et j'ai deux projets dans ma solution: Uniproject et DataAccessProject. Le projet Uipro a une référence au projet DataAccess.
mon projet Uiprojet ciblait le. Net Framework 4 mais mon projet DataAccess ciblait le. Net Framework 3.5 pour une raison ou une autre.
- j'ai changé les deux projets pour cibler.
- désinstallé puis réinstallé le paquet NuGet Entity Framework.
problèmes résolus. Maintenant, J'ai des références à la fois au Cadre D'Entite et au système.Données.Entité
j'ai eu le même problème.J'ai dû réécrire "Dbcontexte" après avoir ajouté la référence à entitefram Framework et il a résolu le problème.
cela signifie que Visual studio n'a pas pu reconnaître la classe automatiquement et a attendu qu'elle soit re-dactylographiée.
il est donc préférable d'ajouter d'abord une référence et ensuite d'implémenter le code.
VS 2013 - ultime utilisés
j'ai dû d'abord désinstaller Entitefram Framework(Uninstall-package Entitefram Framework (not case sensitive apparently)), puis l'installer à nouveau (Install-package Entitefram Framework), via la Console PM
votre projet incapable de résoudre Entitefram Framework classes jusqu'à ce que vous ne l'avez pas ajouté dans votre projet. Pour ajouter le support Entitefram Framework vous devez suivre ces étapes: Outils - > Gestionnaire de paquets Nuget - > gestion du paquet Nuget pour la solution parcourir EntityFramework Il montre la dernière version Stable Entitefram Framework. actuellement 6.1.3 est la dernière version L'installer pour le projet sélectionné.
télécharger http://www.dll-found.com/download/e/EntityFramework.dll
le coller dans (pour x86)
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\
puis à droite cliquez sur project - > add reference - > select Entitefram Framework
Bingo......
j'ai eu ce problème, Lire la réponse ci-dessus et télécharger le cadre intitulé.ddl, mais trouve qu'il est alreadt référencés. J'ai donc ajouté l'espace de noms et le problème a été résolu
utilisant le système.Données.De l'entité;
j'utilise Visual Studio 2010, SP1 installé""
ayant référencé entitefram Framework.dll les deux systèmes.données.entité travaillé.
j'ai eu la même erreur, mais le problème était juste un problème accidentel avec mon modèle.
j'ai accidentellement mis...
public class MyModelDBContext : Context
{
public DBSet<MyModel> MyModels { get; set; }
}
...à l'intérieur de la classe du modèle.
faites un clic droit sur votre référence et allez gérer les paquets NuGet, puis choisissez en ligne all, puis NuGet package source dans la recherche textbox type Entity Framework et installez-le.
1) Désinstaller le cadre D'entité de tous projets
2) Redémarrer Visual Studio
3 )Réinstallation à tous les projets requis
et il a commencé à travailler
il pourrait y avoir un cas où vous faites référence à tout ce dont vous avez besoin et vous pouvez même aller à la définition en appuyant sur F12 sur la classe DbContext qui vous amène à système.Données.L'espace de noms d'Entity mais vous obtenez toujours cet avertissement de compilateur méchant. Assurez-vous que le cadre cible de votre projet et celui de la version Entity Framework que vous utilisez concordent. Aller à L'onglet Projet->Propriétés->application. Changer le cadre de la cible (ne peut pas dire exactement à laquelle, essai et erreur aidera.). Juste mon deux cents.
je suis aussi irrité de cette question à plusieurs reprises et finalement trouver la solution.Aller au fichier edmx->mettre à jour le modèle de la base de données->rafraîchir - > terminer. Solution Propre - > Solution De Reconstruction
vous pouvez essayer sur la console de gestionnaire de paquets
PM> Entitefram Framework\enable-migrations
comme les autres ont suggéré:
- ajouter les références et directives correctes. Mais cela ne fonctionne toujours pas? Peut-être avez-vous le même problème que moi:
Regardez ci-dessous et voyez si vous pouvez me dire ce qui ne va pas:
public class PanelLengthContext : DBContext { }
??!
assurez - vous que le nom de la classe n'est pas mal orthographié - (sensibilité à la casse)!
-
DbContext
est l'orthographe correcte. - c'est comment il devrait ressembler à:
- Vérifiez l'orthographe. ne gaspille pas 20 min de ta vie comme je l'ai fait.
public class PanelLengthContext : DbContext {}
HTH
j'ai le même problème que vous, Je ne peux pas l'implémenter dans la classe Controller tant qu'il fonctionne quand je le mets dans la classe model. Ajoutez ces codes en haut de votre classe de controller
using TimeSheetManagementSystem.Data;
using Microsoft.Extensions.Configuration;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
j'ai fait face au même problème et puis j'ai ajouté l'espace de nom
using Practiceusingentityframework.Models;
après avoir ajouté Qu'il fonctionne très bien
Essayez ceci peut vous aider à résoudre votre problème
et avant cela installer le framework entity de Nuget Manager