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

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

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

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



답변

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

 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적절한 인수와 연결 문자열을 사용 하여 명령 줄 을 실행할 수 있습니다 .


답변

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

여기에 이미지 설명 입력

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

여기에 이미지 설명 입력

그게 다 작동합니다


답변

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

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


답변

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

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

여기에 이미지 설명 입력

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


답변

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

예를 들어 C : \ App \ ProjectName :

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


답변

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

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


답변

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