유형 또는 네임 스페이스 이름 '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.