용어 'scaffold-dbcontext'는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다.


87

asp.net core로 스캐 폴드를 시도 할 때이 명령

scaffold-dbcontext "데이터 소스 = (로컬); 초기 카탈로그 = MyDb; 통합 보안 = True;" Microsoft.EntityFrameworkCore.sqlserver -outputdir 모델

이 오류를 제공합니다.

scaffold-dbcontext : 'scaffold-dbcontext'라는 용어는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다. 이름의 철자를 확인하거나 경로가 포함 된 경우 경로가 올바른지 확인하고 다시 시도하십시오. 줄 : 1 char : 1 + scaffold-dbcontext "Data Source = (local); Initial Catalog = MyDB; In ... + ~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound : (scaffold-dbcontext : String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

여기 에서 해결책을 시도했지만 저에게 효과가 없습니다.

원인 / 치료법이 무엇인지 아십니까?


entityframework.tools가 project.json의 도구 섹션에 있는지 확인합니다.
Tim Scriv

답변:


216

나에게는 패키지 관리자 콘솔에서도 실행 한 후에 분명히 작동했습니다.

 Install-Package Microsoft.EntityFrameworkCore.Tools 

또한 다음을 확인하십시오.

  • 다른 종속성 (예 : Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.SqlServer.Design ...)이 필요에 따라 참조되도록합니다.

  • PM 콘솔의 오른쪽 상단 모서리에서 명령의 대상으로 올바른 어셈블리를 선택하려면

내가 만난 또 다른 문제 : 별도의 클래스 라이브러리에있는 dbcontext에서 다음 오류가 발생했습니다.

이름이 Microsoft.EntityFrameworkCore.SqlServer 인 공급자 어셈블리를 찾을 수 없습니다. 지정된 이름이 올 바르고 프로젝트에서 참조되는지 확인하십시오.

VS에서 내 클래스 라이브러리를 시작 프로젝트 로 설정하여 수정할 수있었습니다 (무의미 해 보이지만 작동하는 이유는 묻지 마십시오).

늦은 편집, 알아야 할 다른 사항이 있습니다. .Net Standard만을 대상으로하는 클래스 라이브러리에 대해 Scaffold-DbContext를 실행할 수 없으며, netcoreapp도 활성화해야합니다. 그렇지 않으면 Scaffold-DbContext가 불평합니다. 모두 목표를 지원하기 위해, 편집 csproj은 넣어 : <TargetFrameworks>netcoreapp2.2;netstandard2.0</TargetFrameworks> 대신의 <TargetFramework>섹션을 참조하십시오.

이 모든 작업이 끝나면 Scaffold-DbContext적절한 인수와 연결 문자열을 사용 하여 명령 줄 을 실행할 수 있습니다 .


2
감사합니다. 귀하의 솔루션은 여전히 그물 코어 2.2을 사용하여 VS2019 작동
PaulC

너무 나쁜 마이크로 소프트는 지난 몇 달 동안 이것을 개선하지 않았습니다. 나는 내 대답이 그다지 도움이 될 것이라고 기대하지 않았고 그것의 일부가 이상한 IDE 동작에 대한 까다로운 해결 방법으로 보이는 한 ...
AFract

오류가 발생했습니다 : 이름이 Microsoft.EntityFrameworkCore.SqlServer 인 공급자 어셈블리를 찾을 수 없습니다. 지정된 이름이 올 바르고 프로젝트에서 참조되는지 확인하십시오. 또한 실행에 있었다 : Microsoft.EntityFrameworkCore.SqlServer - 패키지 설치
아메드 Faizan

@AhmedFaizan은 실제로 게시물에 언급 된 패키지의 예 중 하나입니다. 다행이 도움이되었다
AFract

1
NET Core 3.1에 필요하지만 mysql 공식 문서에는 필요하지 않습니다. mysql EF 코어를 사용하여 먼저 mysql 데이터베이스를 스캐 폴딩하려면 설치해야합니다. 물론 감사합니다.
Leandro

16
  1. project.json 파일 "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final"에서이 파일을 사용할 수 있는지 확인하십시오.

여기에 이미지 설명 입력

  1. 패키지 관리자 콘솔에서 명령 실행

여기에 이미지 설명 입력

그게 다 작동합니다


9
실제로 나는 nuget 패키지를 설치하여이 문제를 해결합니다. Install-Package Microsoft.EntityFrameworkCore.Tools
kepung

@kepung-최근 VS2017 업데이트 이후에이 작업을 수행해야했습니다. 이상한. 문제가 해결되었으므로 의견을 보내 주셔서 감사합니다.
KSwift87

10

VS를 관리자로 실행 하고 다음 패키지를 설치 했는지 확인하십시오 .

  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.SqlServer.Design
  • Microsoft.EntityFrameworkCore.Tools

1
비슷한 문제의 경우 Microsoft.EntityFrameworkCore.SqlServer.Design을 설치할 필요가 없었고 나머지를 설치했으며 올바르게 실행됩니다.
MinaMRM

@MinaMRM 감사합니다. 작동했습니다 !!
대부

8

같은 문제가있었습니다. 제 경우에는 일부 종속성이 누락되었으므로 다음 항목이 있는지 확인하십시오.

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools

여기에 이미지 설명 입력

이것이 도움이되기를 바랍니다. :)


3 개가 모두 있지만 "Scafford-DbContext가 인식되지 않음"오류가 계속 발생합니다. Microsoft.EntityFrameworkCore.SqlServer.Design을 추가하려고했지만 도움이되지 않았습니다.
Rod

1

.NetCore 2.2를 사용하는 경우 아래 명령은 명령 프롬프트 또는 Git Bash에서 나에게 매력처럼 작동합니다. 명령을 실행하기 전에 프로젝트 폴더에 직접 있는지 확인하십시오.

예를 들어 C : \ App \ ProjectName :

 dotnet ef dbcontext scaffold "Server=.\;Database=Databasename;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model

1

NuGet 패키지 관리자에서 Microsoft.EntityFrameworkCore.Tools를 설치했으며 설치된 패키지에 표시되었습니다. 하지만이 오류가 계속 발생했습니다.

Visual Studio (2019 / 버전 16.4.4)를 다시 시작하면 문제가 해결되었습니다.


1

Scaffoldcommand는 dbcontextEF에서 명령의 일부입니다 . 다음은 성공을위한 세부 정보입니다 scaffold.

여기에 이미지 설명 입력

필요한 패키지 참조 :

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0"/>

따라서 우리의 scaffold 명령은 다음과 같아야합니다.

dotnet ef dbcontext scaffold "Server=localhost\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o OutputDirectory

귀하의 Server값은 DB 서버 이름에 따라 다를 수 있습니다. 폴더 와 같은 새로 만든 스캐 폴딩 클래스를 원하는 위치 와 MyDatabase같은 데이터베이스 이름으로 바꿉니다 .masterOutputDirectoryModels


1

올바른 콘솔 인 "패키지 관리자 콘솔"을 사용하고 있는지 확인하십시오. 매우 비슷해 보이지만이 명령에 대해 작동하지 않는 "터미널"콘솔도 있습니다. 패키지 관리자 콘솔은보기-> 다른 창에서 찾을 수 있습니다 (Visual Studio 2019, 버전 16.6.5 기준).


-1

최근에이 오류의 또 다른 원인이 발생했습니다. NuGet 자체가 오래되었습니다.

NuGet을 업데이트하면 문제가 해결되었습니다.

Devanathan의 답변이 작동하지 않으면 NuGet 자체가 최신 상태인지 확인하십시오.


-2

나를 위해 ... Microsoft Docs에서 명령을 복사하여 붙여 넣을 때 어떤 이유로 하이픈 주위에 추가 공백이 추가되었습니다.

하이픈을 제거하면 다음과 같이 수정되었습니다.

잘못된:

Scaffold - DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir Models

좋은:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

또한이 오류가 발생하면 Visual Studio를 다시 시작해보십시오.

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

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