유형 또는 네임 스페이스 이름 'DbContext'를 찾을 수 없습니다.


150

ASP.NET MVC (3)을 처음 접했고 Visual Studio에서 빌드 오류를 해결하는 데 어려움을 겪고 있습니다.

유형 또는 네임 스페이스 이름 'DbContext'를 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?)

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; }
    }
}

내가 얻는 두 가지 오류는 다음과 같습니다.

  • 유형 또는 네임 스페이스 이름 'DbContext'를 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?)
  • 유형 또는 네임 스페이스 이름 'DbSet'을 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?)

내가 무엇을 놓치고 있습니까?


20
NuGet을 사용하여 Entity Framework Code First 참조를 추가 했습니까? 참조를 해결하는 가장 쉬운 방법 일 수 있습니다.
— Ed Chapel

2
확인-솔루션 탐색기 트리에서 참조-> 라이브러리 패키지 추가 참조-> EFCodeFirst-> 설치를 마우스 오른쪽 버튼으로 클릭했습니다. 이것이 당신이 제안한 것입니까? 이 단계를 수행 한 후에도 여전히 동일한 문제가 있습니다.
— Chris

한편 MVC 3 도구를 최신 버전으로 업데이트하고 asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs에 따라 자습서 프로젝트를 만들었습니다 . 이 프로젝트에는이 문제가 없지만 여기에 그리고 Darin이 제안한 제안에도 불구하고 이전 프로젝트에서 DbContext를 받아 들일 수 없습니다.
— Chris

VS2017, EF6, 솔루션을 닫습니다. 솔루션을 다시여십시오. 이제 DbContext를 올바르게 인식합니다.
— redwards510

1
패키지 관리자 콘솔을 엽니 다. 도구> NuGet 패키지 관리자> 패키지 관리자 콘솔을 선택하십시오. 패키지 관리자 콘솔에서 다음 명령을 입력하십시오. install-package EntityFramework
— Zahid Hasan

답변:


200

나는 같은 문제가 있었다. System.Data.Entity가 아닌 EntityFramework.dll 참조가 필요합니다.

방금 다운로드 할 수있는 MvcMusicStore 응용 프로그램에서 가져 왔습니다. http://mvcmusicstore.codeplex.com/ .

또한 MVC에서 엔티티 프레임 워크 코드를 먼저 사용하는 방법에 대한 유용한 예입니다.


7
이것은 나의 경험이었다. vs2010 패키지 관리자가 4.2.0.0을 설치했다고 주장했지만 4.2.0.0의 EntityFramework.dll이 존재하지 않았습니다. vs2010에서 프로젝트를 열고 도구, 라이브러리 패키지 관리자를 통해 설치 명령 을 실행하면 패키지 관리자 콘솔이 EntityFramework 에 대한 참조를 자동으로 추가하고 후속 빌드에 성공했습니다. thnx @Shahzad!
— gerryLowry 2014

7
당신의 도움을 주셔서 감사합니다. Microsoft가 언젠가 Windows에 자신의 소프트웨어를보다 쉽게 ​​설치할 수 있기를 바랍니다. 필요한 것이 무엇인지 그리고 그것들이 모두 어떻게 맞는지 알아 내기 위해 얼마나 많은 장소를 방문해야하는지 놀랍습니다. NuGet, MS 다운로드 사이트, 게시판, 서적 ... 매우 생산적인 시간.
— NoChance

23
가장 좋은 방법은 NuGet (패키지 관리자)을 사용하여 Entity Framework (et al)를 프로젝트로 가져 오는 것입니다.
— kingdango

2
때때로 설치가 작동하도록 Visual Studio를 다시 시작해야합니다. 이것이 나의 경우였다.
— Bedouin

3
패키지 관리자 콘솔을 열고 다음에 붙여 넣기 : Install-Package EntityFramework
— user2862542

71

System.Data.Entity프로젝트에 대한 assebmly 를 참조 하거나 EntityFrameworkNuGet 패키지를 설치하면 모든 것이 자동으로 설정됩니다.


1
대린, 어떻게하는지 설명해 주실 수 있나요?
— Chris

11
@Chris Dickinson References에서 프로젝트 의 항목을 마우스 오른쪽 버튼으로 클릭하고을 선택하십시오 Add Reference.... 그런 다음 .NET탭에서을 선택하십시오 System.Data.Entity. NuGet을 사용하려면 References해당 항목을 마우스 오른쪽 버튼으로 클릭 한 후 Add Library Package Reference...온라인 탭 에서을 검색하십시오 EntityFramework.
— Darin Dimitrov

1
두 단계를 모두 수행했지만 문제가 계속 발생합니다.
— Chris

3
NuGet을 사용하여 EntityFramework를 설치 했습니까? 솔루션 디렉토리와 함께 "패키지"폴더를 만듭니다. 그 안에 "EntityFramework.4.1.10331.0"폴더가 있습니다. "Libs"폴더에 "EntityFramework.dll"이 있습니다. 찾아보기 탭을 사용하여 참조를 추가하고 위의 dll을 선택하십시오. 아래 내 답변을 참조하십시오.
— Amitd

7
TOOLS > Library Package Manager > Package Manager ConsoleVS2012에서 선택 install-package EntityFramework하고 프롬프트에 입력 했습니다. 완벽하게 작동했습니다.
— Peter Gluck

17

간단한 메모입니다. DBContext가 아닌 DbContext입니다. 즉 소문자 'B'. 전체 네임 스페이스 System.Data.Entity ...와 name을 입력하려고 시도 할 때까지 intelesense가 작동하지 않는 동안 동일한 문제가 발생했기 때문에 이것을 발견했습니다. 그리고 마침내 소문자 'b'옵션을 제안했습니다.

System.Data.Entity.DbContext


1
문제가 대문자 "B"라는 것을 발견하기 위해 System.Data.Entity에 관한 모든 참조를 진행했습니다. +1
— F0r3v3r-A-N00b

예, 이것이 해결되었습니다. "Install-Package EntityFramework"단계가 완료되었습니다. 고마워요, +1
— Paceman

9

VS2010을 사용하는 것과 동일한 문제가있었습니다. 나는 이것이 실제로 대답이 아니라는 것을 안다. 나는 그것이 누군가에게 도움이 될 것이라고 생각했습니다. DBContext의 정규화 된 이름을 사용하여 문제를 해결했습니다.

대신에

public class MachineDbContext : DbContext

나는 사용했다

public class MachineDbContext : System.Data.Entity.DbContext

프로젝트를 재건했습니다. 갑자기 VS가 기뻤고 정규화 된 이름을 제거하고 DBContext를 사용할 수도있었습니다.


정규화 된 이름 ... v 지시문을 사용하여 추가하는 방법을 잊을 수있는 방법 ...
— x-code

8

같은 문제가 발생했습니다 ... Package Manager Console에서 EF를 설치하면 나에게 도움이되었습니다.

명령은 다음과 같습니다 Install-Package EntityFramework


4

컴파일러가 인식하지 못하는 경우

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

확인

  1. 컴퓨터에 Entity Framework 4.1이 설치되어 있습니다.
  2. .csproj 파일에는 다음과 같은 참조가 있습니다.

    <Reference Include = "EntityFramework, 버전 = 4.1.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089, processorArchitecture = MSIL"/>
    

    요소 내

    <항목 그룹>
      ...
    </ ItemGroup>
    

    다른 어셈블리에 대한 참조를 포함합니다.


4

나는 같은 문제를 겪었다. 나는 VS2010을 표현했다.

(참고 :이 문제가 발생하면 EntityFramework.dll 참조를 확인하십시오. 누락되었을 수 있습니다.)

다음은 나를 위해 해결했습니다.

최신 MVC 3 도구 업데이트
를 설치 한 다음 EntityFramework 4.1을 설치
하거나 NUGet ie를 사용했습니다. Visual Studio 2010 Express 사용 (도구-> 라이브러리 패키지 관리자-> 라이브러리 패키지 추가 참조-> 온라인 선택-> EntityFramework)

이상하게도 작동하지 않았습니다 .. 그래서 수동으로 "EntityFramework.dll"에 대한 참조를 추가해야
했습니다. dll을 검색해보십시오.
"C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ "

이미 가지고 있다면 '.net'참조를 추가하십시오.

참고 : NuGet을 사용하면 솔루션 디렉토리 옆에 "패키지"폴더가 생성됩니다. 내부에 "EntityFramework.4.1.10331.0"폴더가 있습니다. "Libs"폴더에 "EntityFramework.dll"이 있습니다. 찾아보기 탭을 사용하여
참조를 추가 하고 위의 dll을 선택하십시오.

같은 스냅


4

Visual Studio 2010 express를 사용하고 C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll있으며 문제 를 해결하기 위해 참조를 추가 하고 있습니다.


4

이것은 정말 편리합니다.

  1. 솔루션 탐색기에서 ProjectNAme 프로젝트를 선택하십시오.
  2. 도구 메뉴에서 하위 메뉴가있는 라이브러리 패키지 관리자를 선택하십시오.
  3. 하위 메뉴에서 Package Manager Console을 선택하십시오.
  4. 콘솔의 PM 프롬프트에서 install-package EntityFramework를 입력 한 다음 Enter 키를 누르십시오.


3

프로젝트에 EntityFramework 클래스를 추가하지 않으면 프로젝트에서 EntityFramework 클래스를 확인할 수 없습니다. EntityFramework 지원을 추가하려면 다음 단계를 수행해야합니다. 도구-> 너지 패키지 관리자-> 솔루션 찾아보기를위한 Nuget 패키지 관리 EntityFramework 최신의 안정적인 EntityFramework 버전을 표시합니다. 현재 6.1.3이 최신 버전입니다. 선택한 프로젝트에 설치하십시오.



2

Visual Studio Express SP1 솔루션 탐색기> 참조> 라이브러리 패키지 참조 추가> EntityFramework에서 마우스 오른쪽 단추를 클릭하십시오.


2

사용 CTP5는 대신이 API에 약간의 변화와 새로운 버전입니다. CTP 디렉토리에 설치된 EntityFramework.dll에 대한 참조를 추가해야합니다. 기본값은 다음과 같습니다. c : \ Program Files \ Microsoft ADO.NET Entity Framework 기능 32 비트 시스템의 경우 CTP5 \ Binaries \ EntityFramework.dll. 64 비트 시스템에서는 프로그램 파일 (x86)에 배치됩니다.


2

이것은 코드를 분기했을 때 나에게 일어났다. 이 문제를 해결하려면 Visual Studio에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Nu-get 패키지 관리를 선택하고 EntityFramework를 제거한 다음 다시 설치했습니다. 문제 해결됨


2

방금이 문제가 있었고 다른 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. Visual Studio 2010을 사용하고 있으며 솔루션에 UIProject와 DataAccessProject라는 두 가지 프로젝트가 있습니다. UIProject에는 DataAccessProject에 대한 참조가 있습니다.

내 UIProject는 .Net Framework 4를 대상으로했지만 DataAccessProject는 어떤 이유로 .Net Framework 3.5를 대상으로했습니다.

  • 두 프로젝트를 모두 .Net Framework 4로 변경했습니다.
  • Entity Framework NuGet 패키지를 제거한 후 다시 설치했습니다.

문제가 해결되었습니다. 이제 EntityFramework와 System.Data.Entity에 대한 참조가 있습니다.


2

엔티티 프레임 워크에 대한 참조를 추가 한 후 "DBContext"를 다시 작성해야하고 문제가 해결되었습니다.
Visual Studio에서 클래스를 자동으로 인식하지 못하고 다시 입력하기를 기다렸습니다. 참조를 먼저 추가 한 다음 코드를 구현하는 것이 가장 좋습니다. VS 2013-궁극적 인 사용


2

먼저 EntityFramework (제거 패키지 EntityFramework (대소 문자 구분 안 됨))를 제거한 다음 PM 콘솔을 통해 다시 설치해야합니다 (패키지 EntityFramework 설치).


1

이 문제가 있었고 위의 답변을 읽고 entityframework.ddl을 다운로드했지만 이미 참조되어 있음을 발견했습니다. 그래서 네임 스페이스를 추가하고 문제가 해결되었습니다.

System.Data.Entity 사용;

SP1이 설치된 Visual Studio 2010을 사용하고 있습니다.


1

entityframework.dll을 모두 참조하면 system.data.entity가 작동했습니다.


1

나는 같은 오류가 있었지만 문제는 내 모델에서 우연히 발생한 문제였습니다.

실수로 ...

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

... 모델 클래스 내부.


1
실제로 클래스 안에있는 3 줄?
— Nate-Wilkins

1

다른 방법으로 필요한 dll을 설치하는 방법- 여기 로 갈 수 있습니다 .

또는 NuGet 을 다운로드 하여 VS에서 관리 할 수 있습니다.


1

참조를 마우스 오른쪽 단추로 클릭하고 NuGet 패키지 관리로 이동 한 다음 검색 텍스트 상자 유형 Entity Framework에서 온라인 모두를 선택한 다음 NuGet 패키지 소스를 선택하고 설치하십시오.


1

1) 모두 에서 Entity Framework 제거 프로젝트

2) Visual Studio를 다시 시작하십시오.

3) 모든 필수 프로젝트로 재설치

그리고 그것은 일하기 시작했다


1

필요한 모든 것을 참조하는 경우가있을 수 있으며 DbContext 클래스에서 F12 키를 눌러 정의로 이동하여 System.Data.Entity 네임 스페이스로 이동할 수 있지만 여전히이 불쾌한 컴파일러 경고가 표시됩니다. 프로젝트의 대상 프레임 워크와 사용중인 Entity Framework 버전의 대상 프레임 워크가 일치하는지 확인하십시오. 프로젝트-> 속성-> 응용 프로그램 탭으로 이동하십시오. 대상 프레임 워크를 변경하십시오 (어떻게 시행 착오를할지 정확히 말할 수는 없습니다). 내 두 센트.


1

또한이 문제에서 여러 번 자극을 받아 마침내 해결책을 찾으십시오 .edmx 파일-> 데이터베이스에서 모델 업데이트-> 새로 고침-> 마침으로 이동하십시오. 클린 솔루션-> 솔루션 재구성


0

패키지 관리자 콘솔에서 시도해 볼 수 있습니다

PM> EntityFrameWork \ 마이그레이션 사용


0

다른 사람들이 제안한 것처럼 :

  1. 올바른 참조 및 지시문을 추가하십시오. 그러나 여전히 작동하지 않습니까? 어쩌면 내가했던 것과 같은 문제가있을 수 있습니다.

아래를 살펴보고 무엇이 잘못되었는지 알려주세요.

public class PanelLengthContext : DBContext { } ??!

수업 이름이 실수인지 확인하십시오-(대소 문자 구분)!

  • DbContext 올바른 철자입니다.
  • 다음과 같이 보입니다.
  • 철자를 확인하십시오. 내가 한 것처럼 당신 인생의 20 분을 낭비하지 마십시오.public class PanelLengthContext : DbContext {}

HTH


0

나는 당신과 같은 문제가 있는데, 그것을 모델 클래스에 넣을 때 작동하는 동안 Controller 클래스에서 구현할 수 없습니다. 컨트롤러 클래스 상단에 이러한 코드를 추가하십시오

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

0

동일한 문제에 직면 한 다음 네임 스페이스를 추가했습니다.

using Practiceusingentityframework.Models;

추가 후 정상적으로 작동합니다.

문제를 해결하는 데 도움이 될 수 있습니다.

그 전에 Nuget Manager에서 엔티티 프레임 워크를 설치하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.