it-swarm-pt.tech

O tipo ou o nome do namespace 'DbContext' não pôde ser encontrado

Eu sou muito novo para o asp.net MVC (3) e estou tendo dificuldade em resolver um erro de compilação no Visual Studio:

Não foi possível encontrar o tipo ou o nome do namespace 'DbContext' (você está perdendo uma diretiva usando ou uma referência de 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; }
    }
}

Os dois erros que estou recebendo são:

  • Não foi possível encontrar o tipo ou o nome do namespace 'DbContext' (estão Faltando uma diretiva using ou uma referência de Assembly ?) 
  • O tipo ou nome do namespace 'DbSet' Não pôde ser encontrado (você está Faltando uma diretiva using ou uma referência de Assembly?)

O que estou perdendo?

135
Chris

Eu tive o mesmo problema. Acontece que você precisa da referência EntityFramework.dll (e não System.Data.Entity).

Acabei de extraí-lo do aplicativo MvcMusicStore que você pode baixar de: http://mvcmusicstore.codeplex.com/

Também é um exemplo útil de como usar primeiro o código da estrutura da entidade com o MVC.

192
Shaz

Você precisa referenciar o assembly System.Data.Entity ao seu projeto ou instalar o pacote EntityFramework NuGet que irá configurar tudo para você.

64
Darin Dimitrov

Apenas uma nota rápida. É DbContext, não DBContext. isto é, com um 'B' minúsculo. Eu descobri isso porque eu tive o mesmo problema enquanto intelesense não estava funcionando até que eu tentei digitar o espaço de nome completo System.Data.Entity ... e nome e finalmente sugeriu a opção 'b' minúscula: -

System.Data.Entity.DbContext

12
John Thompson

Eu tive o mesmo problema usando o VS2010. Eu sei que isso não é realmente uma resposta. Eu apenas pensei que poderia ajudar alguém. Eu resolvi usando o nome totalmente qualificado para DBContext.

Ao invés de

public class MachineDbContext : DbContext

Eu usei 

public class MachineDbContext : System.Data.Entity.DbContext

e reconstruiu o projeto. De repente, o VS ficou feliz, e eu pude até mesmo remover o nome totalmente qualificado, e apenas usar o DBContext. 

9
cab0

Eu tive o mesmo problema ... Instalar o EF do Console do Gerenciador de Pacotes funcionou para mim

o comando era: Install-Package EntityFramework

7
Felipe Skinner

Eu tive o mesmo problema .. Eu tenho VS2010 expresso ..

(Nota: Se você vir este problema, tente verificar referências a EntityFramework.dll .. Pode ser que esteja faltando.)

O seguinte resolveu para mim.

Eu instalei mais recente MVC 3 Tools Update
então eu instalei EntityFramework 4.1
ou usando NUGet ie. a partir do Visual Studio 2010 Express (Ferramentas-> Gerenciador de Pacotes da Biblioteca -> Incluir Referência do Pacote de Bibliotecas -> Selecionar Online -> EntityFramework) 

Estranhamente isso não funcionou ... Então eu tive que adicionar manualmente uma referência ao "EntityFramework.dll"
tente fazer uma busca pela dll ..pode estar aqui
"C:\Arquivos de Programas (x86)\Assemblies de Referência\Microsoft\Framework.NETFramework\v4.0 \" 

Se você já tiver, basta adicionar uma referência '.net'.

Nota: Se você usar o NuGet, ele criará uma pasta "packages" ao lado do diretório Solution. Você encontrará a pasta "EntityFramework.4.1.10331.0" dentro dela. Dentro da pasta "Libs", você encontrará "EntityFramework.dll".
Adicione referência a ele usando a guia Browse e selecione a dll acima.

Snap for the same

4
Amitd

Estou usando o Visual Studio 2010 Express e adicionando uma referência a C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll resolveu o problema.

3
ASHISH

Se o seu compilador não reconhece

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

certificar-se de que

  1. você tem o Entity Framework 4.1 instalado em sua máquina;
  2. no seu arquivo .csproj, você tem a seguinte referência

     <Referência Incluir = "EntityFramework, Versão = 4.1.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089, processorArchitecture = MSIL" />
    

    dentro do elemento

     <ItemGroup> 
     ... 
     </ ItemGroup> 
    

    que abriga referências a outras montagens.

3
user669226

Para obter instruções passo a passo, consulte esta nova série de tutoriais do MVC/EF: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data- model-for-an-asp-net-mvc-application O tutorial presume que você tenha instalado a Atualização de Ferramentas do MVC 3 mais recente e forneça um link caso você não o tenha feito.

3
tdykstra

Isso ajuda muito útil:

  1. Selecione o projeto ProjectNAme no Solution Explorer.
  2. No menu Ferramentas, escolha Gerenciador de Pacotes da Biblioteca, que possui um submenu .
  3. No submenu, escolha o Console do Gerenciador de Pacotes.
  4. No tipo de Solicitação do pacote de instalação do console PM EntityFramework, em seguida, Pressione Enter.
3
BehranG BinA

Use CTP5 em vez disso, é uma versão mais nova com algumas alterações na API. Você precisa adicionar uma referência ao EntityFramework.dll que está instalado no diretório CTP - o padrão é: c:\Arquivos de Programas\Microsoft ADO.NET Entity Framework Recurso CTP5\Binaries\EntityFramework.dll para sistema de 32 bits. No sistema de 64 bits, ele será colocado em Arquivos de Programas (x86).

2
John

Download http://www.dll-found.com/download/e/EntityFramework.dll

Cole-o (para x86) 

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

Então, Right clique no projeto -> adicionar referência -> selecione EntityFramework

Bingo......

2
Sanoop

Isso aconteceu comigo quando eu fiz o código ramificado. Para corrigi-lo, cliquei com o botão direito do mouse no meu projeto no Visual Studio, escolhi gerenciar pacotes do Nuget, desinstalei o EntityFramework e, em seguida, reinstale-o. Problema resolvido

2
Neil

eu tive o mesmo problema.Eu tive que reescrever "DBContext" depois de adicionar referência ao entityframework e resolveu o problema.
significa que o Visual Studio não foi capaz de reconhecer a classe automaticamente e esperou que ela fosse re-digitada. então é melhor adicionar referência primeiro e depois implementar o código. VS 2013 - ultimate used

2
user2169532

Visual Studio Express SP1 Clique com o botão direito do mouse em Solution Explorer> Referências> Incluir Referência do Pacote de Bibliotecas> EntityFramework

2
mesteru_vali

Seu projeto não consegue resolver as classes EntityFramework até que você não o inclua em seu projeto. Para adicionar suporte ao EntityFramework, siga estas etapas: Ferramentas-> Gerenciador de Pacotes Nuget -> Gerenciar pacote Nuget para solução navega EntityFramework Mostra a última versão estável do EntityFramework. atualmente 6.1.3 é a versão mais recente Instale-o para o projeto selecionado.

2
Shubham Tiwari

Acabei de ter este problema e nenhuma das outras soluções funcionou para mim. Estou usando o Visual Studio 2010 e tenho dois projetos na minha solução: UIProject e DataAccessProject. O UIProject tem uma referência ao DataAccessProject.

Meu UIProject tinha como alvo o .Net Framework 4, mas meu DataAccessProject estava segmentando o .Net Framework 3.5 por algum motivo. 

  • Mudei os dois projetos para o alvo .Net Framework 4 
  • Desinstalado, em seguida, reinstalou o pacote NuGet do Entity Framework.

Problemas resolvidos. Agora eu tenho referências a EntityFramework e System.Data.Entity

2
MoMo

Eu tive que primeiro desinstalar o EntityFramework (EntityFramework de pacote de desinstalação (aparentemente sem distinção entre maiúsculas e minúsculas)) e instalá-lo novamente (EntityFramework do pacote de instalação), por meio do console PM

2
Mpilo Z

Clique com o botão direito do mouse em sua referência e vá para gerenciar os pacotes do NuGet, em seguida, escolha on-line all, em seguida, NuGet package source no tipo de caixa de texto de pesquisa Entity Framework e instale-o. 

1
kidistB

Eu tive o mesmo erro, mas o problema foi apenas um problema acidental com o meu modelo.

Eu acidentalmente coloquei ...

public class MyModelDBContext : Context
{
 public DBSet<MyModel> MyModels { get; set; }
}

... dentro da classe de modelo.

1
Jason Geiger

Eu tive esse problema, leia a resposta acima e baixe o arquivo entityframework.ddl, mas descobri que ele já foi referenciado. Então eu adicionei o namespace e o problema foi resolvido

using System.Data.Entity;

Estou usando o Visual Studio 2010, SP1 instalado

1
Muhammad Waqas Iqbal

1) Desinstalando o Entity Framework de All projects

2) Reinicie o Visual Studio

3) Reinstalando para todos os projetos necessários 

e começou a trabalhar  

1
Moji

Como forma alternativa você pode ir AQUI - instrução como instalar qualquer dll necessário.

Ou você pode baixar NuGet e gerenciá-lo de VS

1
gbk

Eu também fico irritado com esse problema muitas vezes e, finalmente, encontrar a solução. Vá para o arquivo edmx-> Atualizar Modelo do Banco de Dados-> Atualizar-> Concluir. Solução Limpa-> Solução de Reconstrução

1
Aayush Verma

Pode haver um caso em que você faz referência a tudo o que precisa e pode até mesmo ir para definição pressionando F12 na classe DbContext, que o leva para o namespace System.Data.Entity, mas ainda recebe esse aviso desagradável do compilador. Certifique-se de que a Estrutura de Destino do seu projeto e da versão do Entity Framework que você está usando correspondam. Vá para Project-> Properties-> Application Tab. Mude a Estrutura de Destino (não é possível dizer exatamente para qual, a tentativa e erro ajudarão). Apenas meus dois centavos.

1
Mikayil Abdullayev

tendo referenciado entityframework.dll tanto system.data.entity funcionou.

1
meol

Eu tenho o mesmo problema que você, eu sou incapaz de implementá-lo na classe Controller enquanto funciona quando eu colocá-lo na classe de modelo. Adicione estes códigos no topo da sua classe de controlador

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

Como os outros sugeriram:

  1. Adicione as referências e diretivas corretas. Mas ainda não funciona? Talvez você tenha o mesmo problema que eu fiz:

Dê uma olhada abaixo e veja se você pode me dizer o que está errado:

public class PanelLengthContext : DBContext { }??!

Certifique-se de que o nome da turma não seja errado - (diferenciação de maiúsculas e minúsculas)!

  • DbContext é a grafia correta.
  • é assim que deve ser:
  • verifique a ortografia. não desperdice 20 min da sua vida como eu fiz. public class PanelLengthContext : DbContext {}

HTH

0
BKSpurgeon

Eu enfrentei o mesmo problema e então eu adicionei o namespace

using Practiceusingentityframework.Models;

Depois de adicionar está funcionando bem

Tente isso pode ajudá-lo a resolver seu problema

e antes disso, instale a estrutura da entidade do Nuget Manager

0
Aravindhan R

você pode tentar no console do gerenciador de pacotes

PM> EntityFrameWork\enable-migrations

0
Michael Felina