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?

132

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.

190
répondu Shaz 2011-05-18 17:24:21

vous devez référencer le System.Data.Entity assebmly à votre projet ou installer le paquet NuGet EntityFramework qui va tout configurer pour vous.

62
répondu Darin Dimitrov 2011-04-21 07:54:14

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

11
répondu John Thompson 2011-10-23 18:34:16

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.

9
répondu cab0 2011-09-06 01:16:43

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

7
répondu Felipe Skinner 2015-10-20 11:14:00

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.

Snap for the same

4
répondu Amitd 2011-07-10 06:28:27

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.

3
répondu tdykstra 2011-04-21 21:55:09

si votre compilateur ne reconnaît pas

  • du Système.Données.Entité.Infrastructure
  • DbContext
  • DbSet
  • et alii,

assurez-vous

  1. vous avez Entity Framework 4.1 installé sur votre machine;
  2. 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.

3
répondu user669226 2011-06-08 09:10:08

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.

3
répondu ASHISH 2012-07-01 22:57:41

cela aide vraiment pratique:

  1. sélectionnez le projet ProjectNAme dans Solution Explorer.
  2. dans le Menu Outils, choisissez Library Package Manager qui a un sous-menu.
  3. dans le sous-menu, choisissez Package Manager Console.
  4. à L'invite PM de la console tapez install-package Entitifram Framework then appuyez sur entrée.
3
répondu BehranG BinA 2014-02-13 05:17:31

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

2
répondu mesteru_vali 2011-07-25 12:32:50

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

2
répondu John 2011-10-18 07:14:43

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

2
répondu Neil 2013-04-24 07:42:32

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é

2
répondu MoMo 2013-08-29 15:32:15

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

2
répondu 2014-01-13 13:02:40

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

2
répondu Mpilo Z 2015-12-07 11:40:46

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

2
répondu Shubham Tiwari 2016-09-23 09:22:00

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

2
répondu Sanoop 2017-06-03 14:43:44

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é""

1
répondu Muhammad Waqas Iqbal 2012-05-30 05:26:52

ayant référencé entitefram Framework.dll les deux systèmes.données.entité travaillé.

1
répondu meol 2012-08-31 15:41:22

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.

1
répondu Jason Geiger 2012-10-04 18:11:19

comme alternative vous pouvez aller ici - instruction comment installer n'importe quelle dll requise.

ou vous pouvez télécharger NuGet et le gérer à partir de VS

1
répondu gbk 2014-01-19 16:13:15

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
répondu kidistB 2014-03-17 14:16:53

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

1
répondu Moji 2014-10-21 17:49:49

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.

1
répondu Mikayil Abdullayev 2015-12-18 08:43:35

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

1
répondu Aayush Verma 2016-09-06 06:46:35

vous pouvez essayer sur la console de gestionnaire de paquets

PM> Entitefram Framework\enable-migrations

0
répondu Michael Felina 2017-03-16 07:27:34

comme les autres ont suggéré:

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

0
répondu BKSpurgeon 2017-12-05 04:58:15

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;
0
répondu JApple 2018-02-01 05:14:08

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

0
répondu Aravindhan R 2018-06-09 12:15:50