web-dev-qa-db-fra.com

Le type ou le nom de l'espace de noms 'DbContext' est introuvable

Très novice dans ASP.NET MVC (3), je ne parviens pas à résoudre une erreur de génération dans Visual Studio:

Le type ou le nom de l'espace de noms 'DbContext' est introuvable (vous manque une directive using ou une référence Assembly?)

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 je reçois sont:

  • Le type ou le nom de l'espace de noms 'DbContext' est introuvable (êtes vous manquez d'une directive using ou d'une référence d'assembly .__??) 
  • Le type ou le nom de l'espace de noms 'DbSet' Est introuvable (vous manque-t-il une directive using ou une référence d'assembly .__??)

Qu'est-ce que je rate?

135
Chris

J'ai eu le même problème. Il s'avère que vous avez besoin de la référence EntityFramework.dll (et non de System.Data.Entity).

Je viens de le tirer de l'application MvcMusicStore que vous pouvez télécharger à partir de: http://mvcmusicstore.codeplex.com/

C'est également un exemple utile d'utilisation de MVC dans le cadre d'une structure de code d'entité d'abord.

192
Shaz

Vous devez référencer l'assembly System.Data.Entity à votre projet ou installer le package EntityFramework NuGet qui configurera tout pour vous.

64
Darin Dimitrov

Juste un petit mot. C'est DbContext, pas DBContext. c'est-à-dire avec un 'B' minuscule. J'ai découvert cela parce que j'avais le même problème alors qu'Intelesense ne fonctionnait pas jusqu'à ce que j'essaie de saisir l'espace de noms complet System.Data.Entity ... et name, et finalement, il a suggéré l'option "b" minuscule: -

System.Data.Entity.DbContext

12
John Thompson

J'ai eu le même problème en utilisant VS2010. Je sais que ce n'est pas vraiment une réponse. Je pensais juste que cela pourrait aider quelqu'un… .. Je l'ai résolu en utilisant le nom complet de DBContext.

Au lieu de

public class MachineDbContext : DbContext

J'ai utilisé 

public class MachineDbContext : System.Data.Entity.DbContext

et reconstruit le projet. Soudain, VS était heureux et j'ai même pu supprimer le nom qualifié complet et utiliser DBContext. 

9
cab0

J'ai eu le même problème ... L'installation de l'EF à partir de Package Manager Console a fonctionné pour moi

la commande était: Install-Package EntityFramework

7
Felipe Skinner

J'ai eu le même problème..J'ai VS2010 express ..

(Remarque: Si vous voyez ce problème, essayez de vérifier les références à EntityFramework.dll .. Peut-être est-il manquant.)

Ce qui suit l'a résolu pour moi.

J'ai installé la dernière MVC 3 Tools Update
puis j'ai installé EntityFramework 4.1
ou en utilisant NUGet ie. à partir de avec Visual Studio 2010 Express (Outils-> Gestionnaire de packages de bibliothèque -> Ajouter une référence de package de bibliothèque -> Sélection en ligne -> EntityFramework) 

Étrangement, cela ne fonctionnait pas .. Alors, je devais ajouter manuellement une référence à "EntityFramework.dll"
essayez de rechercher la dll ..peut être ici
"C:\Fichiers de programme (x86)\Assemblys de référence\Microsoft\Framework.NETFramework\v4.0 \" 

Si vous l’avez déjà, ajoutez une référence '.net'.

Remarque: si vous utilisez NuGet, il crée un dossier "packages" à côté de votre répertoire Solution . Vous y trouverez le dossier "EntityFramework.4.1.10331.0". Dans le dossier "Libs", vous trouverez " EntityFramework.dll ".
Ajoutez une référence en utilisant l’onglet Parcourir et sélectionnez la DLL ci-dessus.

Snap for the same

4
Amitd

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
ASHISH

Si votre compilateur ne reconnaît pas

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

assure-toi

  1. entity Framework 4.1 est installé sur votre ordinateur;
  2. dans votre fichier .csproj, vous avez la référence suivante

     <Référence Include = "EntityFramework, Version = 4.1.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089, processorArchitecture = MSIL" />
    

    dans l'élément

     <Groupe d'éléments> 
     ...
     </ ItemGroup> 
    

    qui abrite des références à d'autres assemblées.

3
user669226

Pour des instructions pas à pas, consultez 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 de MVC 3 Tools et fournit un lien au cas où ce ne serait pas le cas.

3
tdykstra

Cela aide vraiment pratique:

  1. Sélectionnez le projet ProjectNAme dans l'Explorateur de solutions.
  2. Dans le menu Outils, choisissez Library Package Manager, qui contient un sous-menu
  3. Dans le sous-menu, choisissez Package Manager Console.
  4. À l'invite PM de la console, entrez Install-package EntityFramework, puis Appuyez sur Entrée.
3
BehranG BinA

Utilisez CTP5 à la place, il s’agit d’une version plus récente avec quelques modifications apportées à l’API. Vous devez ajouter une référence à EntityFramework.dll qui est installé dans le répertoire CTP - la valeur par défaut est: c:\Program Files\Microsoft ADO.NET Fonctionnalité Entity Framework CTP5\Binaries\EntityFramework.dll pour système 32 bits. Sur le système 64 bits, il sera placé dans Program Files (x86).

2
John

Télécharger http://www.dll-found.com/download/e/EntityFramework.dll

Collez-le dans (pour x86) 

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

Puis Clic cliquez sur projet -> ajouter une référence -> sélectionnez EntityFramework

Bingo ......

2
Sanoop

Cela m’est arrivé quand j’ai ramifié du code. Pour résoudre ce problème, j'ai cliqué avec le bouton droit sur mon projet dans Visual Studio, choisi de gérer les packages Nuget, de désinstaller EntityFramework, puis de le réinstaller. Problème résolu

2
Neil

j'ai eu le même problème. J'ai dû réécrire "DBContext" après avoir ajouté une référence à entityframework et le problème a été résolu.
cela signifie que Visual studio n’a pas été en mesure de reconnaître la classe automatiquement et a attendu qu’elle soit à nouveau saisie. Il est donc préférable d’ajouter une référence puis d’implémenter du code. VS 2013 - ultime utilisé

2
user2169532

Visual Studio Express SP1 Cliquez avec le bouton droit de la souris dans Explorateur de solutions> Références> Ajouter une référence de package de bibliothèque> EntityFramework.

2
mesteru_vali

Votre projet ne parvient pas à résoudre les classes EntityFramework tant que vous ne l'avez pas ajouté à votre projet . Pour ajouter le support EntityFramework, vous devez suivre les étapes suivantes: dernière version Installez-le pour le projet sélectionné.

2
Shubham Tiwari

Je viens d'avoir ce problème et aucune des autres solutions ne fonctionnait pour moi. J'utilise Visual Studio 2010 et ma solution comporte deux projets: UIProject et DataAccessProject. Le UIProject a une référence au DataAccessProject.

Mon UIProject ciblait le .Net Framework 4, mais mon DataAccessProject visait le .Net Framework 3.5 pour une raison quelconque. 

  • J'ai changé les deux projets pour cibler .Net Framework 4 
  • Désinstallez puis réinstallez le package NuGet Entity Framework.

Problèmes résolus. Maintenant, j'ai des références à la fois EntityFramework et System.Data.Entity

2
MoMo

Je devais d'abord désinstaller EntityFramework (Uninstall-package EntityFramework (apparemment non sensible à la casse)), puis le réinstaller (Install-package EntityFramework), via la console PM

2
Mpilo Z

Cliquez avec le bouton droit de la souris sur votre référence et accédez à la gestion des packages NuGet, puis sélectionnez Tout en ligne, puis Source du package NuGet dans la zone de recherche, tapez Entity Framework et installez-le. 

1
kidistB

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 de modèle.

1
Jason Geiger

J'ai eu ce problème, lisez la réponse ci-dessus et téléchargez le entityframework.ddl mais constate qu'il est déjà référencé. J'ai donc ajouté l'espace de noms et le problème a été résolu

using System.Data.Entity;

J'utilise Visual Studio 2010, SP1 installé

1

1) Désinstallation de Entity Framework de All projects

2) Redémarrez Visual Studio

3) Réinstallation sur tous les projets requis 

et ça a commencé à fonctionner  

1
Moji

Comme alternative, vous pouvez aller dans ICI - comment installer les dll nécessaires.

Ou vous pouvez télécharger NuGet et le gérer depuis VS

1
gbk

Je suis également irrité par ce problème plusieurs fois et trouve enfin la solution.Allez dans le fichier edmx-> Mettre à jour le modèle à partir de la base de données-> Actualiser-> Terminer . Solution propre-> Solution de reconstruction

1
Aayush Verma

Dans certains cas, vous pouvez référencer tout ce dont vous avez besoin et vous pouvez même accéder à la définition en appuyant sur F12 dans la classe DbContext qui vous dirige vers l’espace de noms System.Data.Entity, mais vous obtenez toujours cet avertissement du compilateur. Assurez-vous que le cadre cible de votre projet et celui de la version d'Entity Framework que vous utilisez correspondent. Allez dans Projet-> Propriétés-> Application. Changez le cadre cible (vous ne pouvez pas dire exactement à qui, essais et erreurs vous aideront.). Juste mes deux cents.

1
Mikayil Abdullayev

ayant référencé entityframework.dll les deux system.data.entity ont fonctionné.

1
meol

J'ai le même problème que vous, je ne parviens pas à l'implémenter dans la classe Controller tant qu'il fonctionne lorsque je le mets dans la classe modèle Ajoutez ces codes en haut de votre classe de contrôleur

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

Comme les autres l'ont suggéré:

  1. Ajoutez les références et directives correctes. Mais ça ne marche toujours pas? Peut-être que vous avez le même problème que j'ai eu:

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.
  • voici à quoi cela devrait ressembler:
  • vérifier l'orthographe. Ne perdez pas 20 minutes de votre vie comme je l'ai fait. public class PanelLengthContext : DbContext {}

HTH

0
BKSpurgeon

J'ai fait face au même problème et ensuite j'ai ajouté l'espace de noms

using Practiceusingentityframework.Models;

Après l'ajout ça fonctionne bien

Essayez ceci peut vous aider à résoudre votre problème

et avant cela installez le framework d'entité à partir de Nuget Manager

0
Aravindhan R

vous pouvez essayer la console du gestionnaire de paquets

PM> EntityFrameWork\enable-migrations

0
Michael Felina