Je suis TRÈS nouveau sur ASP.NET MVC (3) et j'ai du mal à 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 d'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 (vous manque une directive using ou une référence d'assembly?)
- Le type ou le nom d'espace de noms 'DbSet' est introuvable (vous manque une directive using ou une référence d'assembly?)
Qu'est-ce que je rate?
Réponses:
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 retirer de l'application MvcMusicStore que vous pouvez télécharger à partir de: http://mvcmusicstore.codeplex.com/
C'est également un exemple utile de la façon d'utiliser d'abord le code du framework d'entité avec MVC.
la source
Vous devez référencer
System.Data.Entity
assebmly à votre projet ou installer leEntityFramework
package NuGet qui configurera tout pour vous.la source
References
élément dans le projet et sélectionnezAdd Reference...
. Puis dans l'.NET
onglet, sélectionnezSystem.Data.Entity
. Et si vous souhaitez utiliser NuGet, cliquez avec le bouton droit sur l'References
élément, puis sélectionnezAdd Library Package Reference...
et dans l'onglet En ligne, recherchezEntityFramework
.TOOLS > Library Package Manager > Package Manager Console
dans VS2012 et tapéinstall-package EntityFramework
à l'invite. A parfaitement fonctionné.Juste un petit mot. Il s'agit de DbContext et non de 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'essaye de taper l'espace de nom complet System.Data.Entity ... et le nom et finalement il a suggéré l'option 'b' minuscule: -
System.Data.Entity.DbContext
la source
J'ai eu le même problème avec VS2010. Je sais que ce n'est pas vraiment une réponse. J'ai juste pensé que ça pourrait aider quelqu'un. Je l'ai résolu en utilisant le nom complet de DBContext.
Au lieu de
j'ai utilisé
et reconstruit le projet. Soudain, VS était heureux, et j'ai même pu supprimer le nom complet et utiliser simplement DBContext.
la source
J'ai eu le même problème ... L'installation de l'EF à partir de la console du gestionnaire de package a fonctionné pour moi
la commande était:
Install-Package EntityFramework
la source
Si votre compilateur ne reconnaît pas
assure-toi
dans votre fichier .csproj, vous avez la référence suivante
dans l'élément
qui contient des références à d'autres assemblées.
la source
J'ai eu le même problème .. J'ai VS2010 express ..
(Remarque: si vous rencontrez ce problème, essayez de vérifier les références à EntityFramework.dll. Il est peut-être manquant.)
Ce qui suit l'a résolu pour moi.
J'ai installé la dernière mise à jour des outils MVC 3,
puis j'ai installé EntityFramework 4.1
ou en utilisant NUGet ie. à partir de Visual Studio 2010 Express (Outils-> Gestionnaire de package de bibliothèque -> Ajouter une référence de package de bibliothèque -> Sélectionner en ligne -> EntityFramework)
Étrangement cela n'a pas fonctionné..J'ai donc dû ajouter manuellement une référence à "EntityFramework.dll"
essayez de faire une recherche pour la dll ..peut être ici
"C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ "
Si vous l'avez déjà, ajoutez simplement une référence «.net».
Remarque: Si vous utilisez NuGet, il crée un dossier «packages» à côté de votre répertoire Solution. Vous trouverez le dossier "EntityFramework.4.1.10331.0" à l'intérieur. Dans le dossier "Libs", vous trouverez "EntityFramework.dll".
Ajoutez-y une référence en utilisant l'onglet Parcourir et sélectionnez la DLL ci-dessus.
la source
J'utilise Visual Studio 2010 express et j'ajoute une référence pour
C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll
résoudre le problème.la source
Cela aide vraiment pratique:
la source
Pour obtenir des instructions étape par étape, consultez cette nouvelle série de didacticiels MVC / EF: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp -net-mvc-application Le didacticiel 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.
la source
Votre projet n'a pas pu résoudre les classes EntityFramework tant que vous ne l'avez pas ajouté à votre projet. Pour ajouter la prise en charge d'EntityFramework, vous devez suivre les étapes suivantes: Outils-> Gestionnaire de packages Nuget -> Gérer le package Nuget pour la solution parcourir EntityFramework Il affiche la dernière version stable d'EntityFramework. actuellement 6.1.3 est la dernière version Installez-le pour le projet sélectionné.
la source
Téléchargez http://www.dll-found.com/download/e/EntityFramework.dll
Collez-le (pour x86)
Puis faites un clic droit sur le projet -> ajouter une référence -> sélectionnez EntityFramework
Bingo ......
la source
Visual Studio Express SP1 Cliquez avec le bouton droit dans l'Explorateur de solutions> Références> Ajouter une référence de package de bibliothèque> EntityFramework
la source
Utilisez plutôt CTP5, c'est une version plus récente avec quelques changements dans 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 Entity Framework Feature CTP5 \ Binaries \ EntityFramework.dll pour le système 32 bits. Sur un système 64 bits, il sera placé dans Program Files (x86).
la source
Cela m'est arrivé lorsque j'ai branché le code. Pour résoudre ce problème, j'ai cliqué avec le bouton droit sur mon projet dans Visual Studio, j'ai choisi de gérer les packages Nu-get, j'ai désinstallé EntityFramework, puis je l'ai réinstallé. Problème résolu
la source
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: UIProject et DataAccessProject. UIProject a une référence à DataAccessProject.
Mon UIProject ciblait le .Net Framework 4 mais mon DataAccessProject ciblait le .Net Framework 3.5 pour une raison quelconque.
Problèmes résolus. Maintenant, j'ai des références à la fois à EntityFramework et System.Data.Entity
la source
J'ai eu le même problème. J'ai dû réécrire "DBContext" après avoir ajouté une référence à entityframework et cela a résolu le problème.
cela signifie que Visual studio n'a pas été en mesure de reconnaître la classe automatiquement et a attendu qu'elle soit retapée. il est donc préférable d'ajouter d'abord la référence, puis d'implémenter le code. VS 2013 - ultime utilisé
la source
J'ai d'abord dû désinstaller EntityFramework (Uninstall-package EntityFramework (pas sensible à la casse apparemment)), puis l'installer à nouveau (Install-package EntityFramework), via la console PM
la source
J'ai eu ce problème, lisez la réponse ci-dessus et téléchargez le entityframework.ddl, mais j'ai constaté qu'il était 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é
la source
ayant référencé entityframework.dll les deux system.data.entity ont fonctionné.
la source
J'ai eu la même erreur mais le problème était juste un problème accidentel avec mon modèle.
J'ai mis accidentellement ...
... à l'intérieur de la classe modèle.
la source
Comme alternative, vous pouvez aller ICI - instructions pour installer toute dll requise.
Ou vous pouvez télécharger NuGet et le gérer à partir de VS
la source
Cliquez avec le bouton droit sur votre référence et accédez à la gestion des packages NuGet, puis choisissez tout en ligne, puis la source du package NuGet dans la zone de texte de recherche, tapez Entity Framework et installez-la.
la source
1) Désinstaller Entity Framework de tous projets
2) Redémarrez Visual Studio
3) Réinstallation sur tous les projets requis
et ça a commencé à fonctionner
la source
Il peut 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 à l'espace de noms System.Data.Entity mais vous obtenez toujours cet avertissement de compilateur méchant. Assurez-vous que le Framework cible de votre projet et celui de la version d'Entity Framework que vous utilisez correspondent. Allez dans Projet-> Propriétés-> Onglet Application. Changez le cadre cible (vous ne pouvez pas dire exactement lequel, les essais et les erreurs vous aideront.). Juste mes deux cents.
la source
Je suis également irrité à plusieurs reprises par ce problème 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
la source
vous pouvez essayer la console du gestionnaire de packages
PM> EntityFrameWork \ enable-migrations
la source
Comme les autres l'ont suggéré:
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é - (respect de la casse)!
DbContext
est l'orthographe correcte.public class PanelLengthContext : DbContext {}
HTH
la source
J'ai le même problème que vous, je ne peux pas l'implémenter dans la classe Controller tant que cela fonctionne lorsque je le mets dans la classe model. Ajoutez ces codes en haut de votre classe de contrôleur
la source
J'ai rencontré le même problème et ensuite j'ai ajouté l'espace de noms
Après avoir ajouté, cela fonctionne bien
Essayez ceci peut vous aider à résoudre votre problème
et avant cela, installez le framework d'entité à partir de Nuget Manager
la source