Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 349. dotnet ef 명령어 사용을 위한 준비 [링크 복사], [링크+제목 복사],
조회: 20651
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)

dotnet ef 명령어 사용을 위한 준비

dotnet ef 명령어는 Microsoft.EntityFrameworkCore를 위한 확장 명령어인데, 이에 대해서는 다음의 글에서 자세하게 설명하고 있습니다.

EF Core .NET Command-line Tools
; https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

dotnet ef 명령어를 위한 사전 준비 작업은 간단합니다. 우선, .csproj 파일에 다음과 같이 DotNetCliToolReference 노드를 추가합니다.

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

  ...[생략]...
  <ItemGroup>
    ...[생략]...
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>

</Project>

이렇게만 설정하면 이후 dotnet ef 명령어가 실행 가능합니다. 하지만, "dotnet ef database update"와 같은 명령어가 제대로 동작하려면 해당 프로젝트에 "Microsoft.EntityFrameworkCore.Design" 어셈블리도 참조가 되어 있어야 합니다. 이를 위해 다음과 같이 NuGet으로부터 패키지 추가를 하면 됩니다.

Install-Package Microsoft.EntityFrameworkCore.Design

또는 명령행에서 "dotnet add package"를 수행해도 됩니다.

...> dotnet add package Microsoft.EntityFrameworkCore.Design
...> dotnet restore

이후 .csproj 파일이 있는 폴더에서 "dotnet ef ..." 명령어를 수행하면 정상적으로 Microsoft.EntityFrameworkCore 관련 작업을 수행할 수 있습니다.




오류 정리입니다. ^^ 만약 다음과 같이 오류가 발생하면,

E:\WebApplication1> dotnet ef
No executable found matching command "dotnet-ef"

반드시 .csproj 파일과 같은 폴더에서 "dotnet ef" 명령어를 수행했는지 확인 후, .csproj 파일에도 다음의 설정이 포함되어 있는지 봅니다.

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />




반면, 다음과 같은 오류가 발생한다면?

E:\WebApplication1\WebApplication2> dotnet ef database update
Your startup project 'WebApplication2' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.

프로젝트(csproj)에 "Microsoft.EntityFrameworkCore.Design" 어셈블리가 참조되어 있는지 확인합니다. 없다면 NuGet으로부터 추가합니다.

Install-Package Microsoft.EntityFrameworkCore.Design




또는 이런 오류 메시지가 나온다면?

E:\WebApplication1\WebApplication2> dotnet ef database update
No DbContext was found in assembly 'WebApplication2'. Ensure that you're using the correct assembly and that the type is neither abstract nor generic.

해당 .csproj 파일에 DbContext 관련 클래스가 정의되어 있지 않기 때문입니다. 관련 코드를 먼저 추가한 다음 "dotnet ef database update" 명령어를 수행해야 합니다.




그 외에, UseSqlServer 확장 메서드 사용 시

services.AddDbContext<YourDBContext>(options => options.UseSqlServer(dbConnectionString));

다음과 같은 컴파일 오류가 발생할 수 있습니다.

Error CS1061 'DbContextOptionsBuilder' does not contain a definition for 'UseSqlServer' and no extension method 'UseSqlServer' accepting a first argument of type 'DbContextOptionsBuilder' could be found (are you missing a using directive or an assembly reference?)

UseSqlServer 확장 메서드는 Microsoft.EntityFrameworkCore.SqlServer 어셈블리에 정의되어 있는데 이를 참조하지 않아서 그런 것입니다. 역시 NuGet을 통해 참조를 하면 정상적으로 빌드가 됩니다.

Install-Package Microsoft.EntityFrameworkCore.SqlServer




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 1/28/2022]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 166  167  168  169  170  171  [172]  173  174  175  176  177  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
705정성태4/20/200920937개발 환경 구성: 40. TFS2008 SP1의 DBTier에 SQL Server 2008 SP1 설치 [1]
704정성태4/19/200920865개발 환경 구성: 39. Together 2007 SP1 설치
702정성태4/18/200932179.NET Framework: 130. Infragistics - Tabbed MDI WPF 응용 프로그램파일 다운로드1
701정성태4/17/200927041Windows: 44. bootsect 오류 - Access is denied.
700정성태4/17/200930110.NET Framework: 129. Infragistics WPF 컨트롤 사용 [1]
699정성태4/16/200928668.NET Framework: 128. 이벤트 멤버의 명시적 구현파일 다운로드1
696정성태4/12/200927908오류 유형: 77. RDP 연결이 되지 않는 경우. [1]
693정성태4/9/200922436오류 유형: 76. "Client found response content type of '', but expected 'text/xml'. The request failed with an empty response.No Reports".
692정성태4/8/200935438.NET Framework: 127. ClickOnce로 ActiveX를 같이 배포하는 방법 [2]파일 다운로드1
690정성태4/5/200923041오류 유형: 75. Event Viewer - The data is invalid (13)
688정성태4/5/200929080VS.NET IDE: 60. Output 경로에 매크로 상수 사용하는 방법 [1]
687정성태4/5/200923365.NET Framework: 126. Composite Application Guidance for WPF and Silverlight
689정성태4/5/200923258    답변글 .NET Framework: 126.1. CAG - 빌드 환경 구성파일 다운로드1
691정성태4/6/200923042    답변글 .NET Framework: 126.2. CAG - Shell 띄우기파일 다운로드1
695정성태4/10/200924790    답변글 .NET Framework: 126.3. CAG - 간단한 유형의 모듈 제작파일 다운로드1
703정성태4/18/200923727        답변글 .NET Framework: 126.6. CAG - Tabbed MDI Shell 적용파일 다운로드1
697정성태4/13/200927975    답변글 .NET Framework: 126.4. CAG - Unity 컨테이너 사용 [1]파일 다운로드1
698정성태4/15/200927215    답변글 .NET Framework: 126.5. CAG에 MVVM 패턴 적용 (1) [2]파일 다운로드1
686정성태4/4/200948871웹: 11. IE 8 - TabProcGrowth 레지스트리 키 [2]
685정성태4/3/200949617개발 환경 구성: 38. Hyper-V 사용 후기 [5]
684정성태4/2/200924066오류 유형: 74. IE 8 설치 이후, VS.NET 위저드 화면 동작 오류
683정성태3/28/200930867디버깅 기술: 26. 보호 모드로 응용 프로그램 디버깅하는 방법 - 두 번째 이야기 [3]
682정성태3/27/200927962디버깅 기술: 25. 보호 모드로 응용 프로그램 디버깅하는 방법 [2]
681정성태3/23/200925156오류 유형: 73. SQL Server 2008 Express 설치 오류
680정성태3/21/200925035.NET Framework: 125. WPF - RadioButton에 대한 데이터바인딩(2) [1]파일 다운로드1
679정성태3/15/200920096오류 유형: 72. IE 8 멈춤 현상 - 두 번째 이야기
... 166  167  168  169  170  171  [172]  173  174  175  176  177  178  179  180  ...