Entity Framework Core : DbContextOptionsBuilder에 'usesqlserver'에 대한 정의가없고 'usesqlserver'확장 메소드가 없습니다.


150

EF core를 처음 사용하고 ASP.NET Core 프로젝트에서 작동하도록 노력하고 있습니다.

startup.cs구성에서 DbContext연결 문자열을 사용 하도록 구성하려고 할 때 위의 오류가 발생 합니다. 이 튜토리얼을 따르고 있습니다 : https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

문제가있는 코드 startup.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using tracV2.models;
using tracV2.data;

namespace tracV2
{
    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            services.AddSingleton<IConfiguration>(Configuration);

            string conn = Configuration.GetConnectionString("optimumDB");

            services.AddDbContext<tracContext>(options => options.usesqlserver(conn));
        }

UseSqlServer나는 상황에 직접 넣으면 방법은 인식 :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace tracV2.data
{
    public class tracContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("myrealconnectionstring");
        }

모든 온라인 조사 결과가 누락 된 참조를 가리키고 있지만 누락 된 참조를 찾을 수없는 것 같습니다 ( image 참조 ).


같은 것, intellissense도 방법을 찾지 못합니다.
Maxime Laflamme

답변:



351

먼저 Microsoft.EntityFrameworkCore.SqlServer NuGet 패키지를 설치합니다 .

PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer

그런 다음 네임 스페이스를

using Microsoft.EntityFrameworkCore;

데이터베이스 컨텍스트를 추가합니다 :

services.AddDbContext<AspDbContext>(options =>
    options.UseSqlServer(config.GetConnectionString("optimumDB")));

3
답변 주셔서 감사합니다. 그러나 나는 이미 그렇게했습니다. 원래 프로젝트에서 무언가가 손상되었다고 의심되기 시작했습니다. 새 프로젝트에서 재현 할 수 있는지 확인하려고 노력할 것입니다.
Maxime Laflamme

10
이 답변은 다른 답변이 아닌 정답으로 표시되어야합니다. 이유는 UseSqlServer 메서드가 다른 패키지가 아닌이 패키지에서 온 것이기 때문입니다.
H35am

107

첨가 using Microsoft.EntityFrameworkCore;

수동으로 나를 위해 문제를 해결

여기에서 발견

편집하다...

닷넷 코어 3.1 추가

Microsoft.EntityFrameworkCore.SqlServer


5
이것이 답입니다.
smulholland2

나를 위해 고쳤다! 어쨌든 제안 목록 ctrl +에 없었습니다.
Ron Splinter

.Net Core 2.2
lucamuh

1
예, 그러나 dotnetcore 3.1에는 Microsoft.EntityFrameworkCore.SqlServer 패키지가 필요하다는 것을 알았습니다. 그 전에는 Microsoft.EntityFrameworkCore만으로도 충분했습니다.
Jeremy Ray Brown

31

NuGet 패키지 아래에 설치하면 문제가 해결됩니다.

Microsoft.EntityFrameworkCore.SqlServer

설치 패키지 Microsoft.EntityFrameworkCore.SqlServer


1
이 한 줄 명령으로 op 문제를 해결하는 방법에 대해 좀 더 설명을 추가하십시오. 구체적으로, 여기에서는 패키지를 다루므로 패키지 작동 방식을 설명해야합니다.
Parth Pandya

"DbContextOptionsBuilder.UseSqlServer"Microsoft.EntityFrameworkCore.SqlServer 패키지 에서 사용할 수 있으므로 빌드 문제를 해결하려면 참조를 추가해야합니다.
Phani K

9

패키지가 없습니다. 패키지 관리자 콘솔을 열고 아래 코드를 실행하십시오.

Install-Package Microsoft.EntityFrameworkCore.SqlServer 

9

아래 단계를 따르십시오.

Entity Framework Core 용 Entity Framework Core Design 및 SQL Server 데이터베이스 공급자를 설치하십시오.

dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

엔티티 프레임 워크 코어 가져 오기 :

using Microsoft.EntityFrameworkCore;

그리고 DbContext를 설정하십시오 :

var connectionString = Configuration.GetConnectionString("myDb");
services.AddDbContext<MyDbContext>(options => 
    options.UseSqlServer(connectionString)
);

7

Visual Studio Code를 사용하고있었습니다.

1) 버전 번호를 지정하여 'Microsoft.EntityFrameworkCore.SqlServer'패키지를 설치하십시오.

VS 코드 :

'dotnet 추가 패키지 Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'

비주얼 스튜디오:-

'설치 패키지 Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'

' 패키지'Microsoft.EntityFrameworkCore.SqlServer '는 해당 프로젝트'모든 '프레임 워크와 호환되지 않습니다 . 링크를 참조하십시오 .

2) 그런 다음 Microsoft.EntityFrameworkCore를 사용하여 네임 스페이스를 추가하십시오 . 'Startup.cs 파일에서 수동으로.

아래 링크 https://github.com/aspnet/EntityFramework/issues/7891을 참조하십시오 .

3) ' Package'Microsoft.EntityFrameworkCore.Design '이'프로젝트의 모든 '프레임 워크와 호환되지 않는 ' ' Microsoft.EntityFrameworkCore.SqlServer.Design'에 대한 종속성 문제가 발생 하면 아래 명령을 실행해야합니다.

VS 코드 :-

dotnet 패키지 추가 Microsoft.EntityFrameworkCore.Design -v 1.1

비주얼 스튜디오

설치 패키지 Microsoft.EntityFrameworkCore.Design -v 1.1


1
이것은 실제로 작동합니다. 이것이 질문에 대한 최상의 답변입니다. 감사합니다 @ 크리슈나
penderi

6

프로젝트-> ManageNugetPackages-> 찾아보기-> "Microsoft.EntityFrameworkCore.SqlServer"를 검색하고 설치 또는 업데이트하십시오.


4

Win의 최고 점수 답변에서 언급했듯이 Microsoft.EntityFrameworkCore.SqlServer NuGet Package를 설치해야 할 수도 있지만이 질문은 asp.net core mvc를 사용하고 있습니다. 최신 ASP.NET Core 2.1에는 MS에 Microsoft.AspNetCore.App이라는 메타 패키지가 포함되어 있습니다.

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2

솔루션 탐색기에서 ASP.NET Core MVC 프로젝트를 마우스 오른쪽 단추로 클릭하고 선택하면 참조를 볼 수 있습니다. Edit Project File

ASP.NET 코어가 using 문을 webapps하는 경우이 메타 패키지를 볼 수 있습니다

<PackageReference Include="Microsoft.AspNetCore.App" />

이 메타 패키지에는 Microsoft.EntityFrameworkCore.SqlServer가 포함되어 있습니다. 따라서 Startup.cs에는 다음을 추가하기 만하면됩니다.

using Microsoft.EntityFrameworkCore;


3

이 문제는 Microsoft.EntityFrameworkCore.SqlServer.Design에 대한 프로젝트 참조를 추가하여 해결할 수 있다고 생각합니다.

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

Microsoft.EntityFrameworkCore.SqlServer가 내 프로젝트에 직접 설치되지 않았지만 .Design 패키지는이를 전제 조건으로 설치합니다.


전이 의존성으로 필요한 프로젝트를 가져 오는 불필요한 패키지를 설치하는 것이 문제의 해결책이 아닙니다.
Smit

패키지가 필요하지 않다고 가정하지만 정확히 동일한 문제가 발생했을 때 프로젝트가 수정되었습니다.
Andrew S

현재 패키지에는 해당 패키지가 필요하지 않습니다. 다른 문제가 필요할 수 있지만이 문제는 아닙니다.
Smit

7 월 27 일 현재 Microsoft.EntityFrameworkCore.SqlServer 패키지 만 설치하면 문제가 해결됩니다.
danfer

3
오늘 2018 년 5 월 5 일 현재 Microsoft.EntityFrameworkCore.SqlServer.Design 패키지를 추가해야합니다. 이것은 ASP.NET Core 2.0.1 웹 프로젝트를 사용하여 관찰되었습니다.
Rus

3

나 에게이 문제는 Visual Studio Code에서 발생했으며 2 단계로 해결할 수있었습니다.

  1. 수동으로 추가 using Microsoft.EntityFrameworkCore;
  2. dotnet build터미널에서 실행 중입니다.

3

Visual Studio에서 NuGet Package Manager => 솔루션 용 패키지 관리를 확인하고 솔루션설치 되었는지 여부 에 따라 아래의 모든 패키지를 확인하십시오 .

  1. EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore
  3. Microsoft.EntityFrameworkCore.InMemory
  4. Microsoft.EntityFrameworkCore.Relational
  5. Microsoft.EntityFrameworkCore.Sqlite.Core
  6. Microsoft.EntityFrameworkCore.SqlServer
  7. Microsoft.EntityFrameworkCore.Tools

위의 모든 패키지가 설치되어 있는지 확인한 후 동일한 문제를 해결했습니다.



3

먼저 추가 Install-Package Microsoft.EntityFrameworkCore.SqlServer

다음으로 .cs 파일에 추가 using Microsoft.EntityFrameworkCore;

마지막으로 이것을 코어에 추가하십시오 Startup.cs

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
        }

2

Sqlite의 경우이 문제에 직면하면

. 이것이 Sqlite 버전의 문제라고 생각합니다.이 버전의 SqLite를 사용할 때도 동일한 문제가 발생 했습니다.

버전 2.2.4 :

여기에 이미지 설명을 입력하십시오

여기 여기에 이미지 설명을 입력하십시오 에서 버전을 확인한 후 버전을 변경 한 다음 작동했습니다.

여기에 이미지 설명을 입력하십시오

이것을 사용한 후 오류가 없습니다

버전 2.1.2 :

여기에 이미지 설명을 입력하십시오


1

나는 간단히 다음과 같이 해결했습니다.

SqlServerDbContextOptionsExtensions문제의 수업에 추가SqlServerDbContextOptionsExtensions

이로 인해 문제가 해결되며 기본적으로 일부 참조가 누락되어 있어야합니다.


1

여전히이 문제가있는 사람 : NuGet을 사용하여 설치하십시오. Microsoft.EntityFrameworkCore.Proxies

이 문제는 EFCore와 함께 Castle Proxy를 사용하는 것과 관련이 있습니다.


1

와우 너무 많은 답변은 아직이 Microsoft.EntityFrameworkCore.InMemory 패키지를 언급하지 않았습니다 !

이 패키지에 대한 참조를 추가하십시오 <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />.


1

Microsoft.EntityFrameworkCore.SqlServer v3.0.0 및 Microsoft.EntityFrameworkCore.Tools v3.0.0으로 옮길 때이 문제가 발생 했습니다.

두 라이브러리에서 v2.2.6으로 다시 변경하면 오류가 사라졌습니다. 이것은 솔루션보다 더 많은 해결 방법이지만 문제가 해결 될 때까지 시작하고 실행할 수 있습니다.


1

이 문제를 해결하는 쉬운 방법

에러 메시지:
여기에 이미지 설명을 입력하십시오

솔루션 :
NuGet으로 "microsoft.entityframeworkcore.sqlserver"를 설치하려면
여기에 이미지 설명을 입력하십시오

고정 :
여기에 이미지 설명을 입력하십시오

추신 : "Microsoft.EntityFrameworkCore;"를 사용하여 콘텐츠에 EF를 사용하고 있는지 확인하십시오. 여기에 이미지 설명을 입력하십시오


0

asp.net 코어 버전 2.1의 경우 문제를 해결하려면 다음 패키지를 추가하십시오. (적어도 이것은 SQLite를 사용하여 문제를 해결합니다)

dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design

다음은 엔티티 프레임 워크 코어와 함께 SQLite를 사용하는 문서에 대한 참조입니다. https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite


0

이 문제가 있었지만 필요한 NuGet 패키지를 추가하지 않은 것 같습니다. 비록 그렇게했다고 생각했지만 하나씩 확인하십시오.


0

현재 Entity Framework Core 3.1.3에서 작업 중입니다. 위의 해결책 중 어느 것도 내 문제를 해결하지 못했습니다.

그러나 내 프로젝트에 Microsoft.EntityFrameworkCore.Proxies 패키지를 설치하면 문제가 해결되었습니다. 이제 DBContext 옵션을 설정할 때 UseLazyLoadingProxies () 메서드 호출에 액세스 할 수 있습니다.

이것이 누군가를 돕기를 바랍니다. 다음 기사를 참조하십시오.

EF 코어의 지연 로딩


0

설치 패키지 :

**Microsoft.EntityFrameworkCore.SqlServer**

그런 다음 수업 상단을 추가하십시오.

**Microsoft.EntityFrameworkCore;**

그것은 나를 위해 일했다


0

나는 선을 사용해야했다

 services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));

Startup.cs의 ConfigureServices 메서드에서


0

https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi 에서 TodoApi.csproj에 다음 코드를 복사하면 비슷한 문제가 해결되었습니다.

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

</Project>

Microsoft.AspNetCore.All이 과도 할 수 있지만 EntityFrameworkCore를 포함합니다.


-1

NuGet 패키지 설치 Microsoft.EntityFrameworkCore.SqlServer이 문제를 해결 를 .

Core 버전 3.1을 사용하고 있습니다.


2
이 답변은 이미 2017-03-29에 제공되었습니다. 다시 반복 할 필요가 없습니다
Thomas Weller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.