가장 중요한 두 가지 팁 :
[1]- 새 스캐 폴드 명령을 실행하기 전에 프로젝트가 완전히 빌드되었는지 확인하십시오 .
그렇지 않으면...
- 코드를 작성하기 시작합니다.
- 모델에서 필수 DB 열이 누락되었음을 알 수 있습니다.
- 당신은 그것을 비계하려고 할 것입니다.
- 20 분 후에 빌드 (및 스캐 폴드 명령)가 실패한 이유는 말 그대로 반 줄의 코드가 있기 때문입니다. 이런!
[2]-소스 제어에 체크인하거나 사본을 만드십시오.
- 변경된 사항을 쉽게 확인할 수 있습니다.
- 필요한 경우 롤백을 허용합니다.
운이 나지 않거나 실수를하면 매우 성가신 '닭과 달걀'문제가 발생할 수 있습니다.
기타 문제 :
DLL이 여러 개있는 경우 잘못된 프로젝트 로 생성하고 있지 않은지 확인하십시오 . '빌드 실패'메시지는 여러 가지 이유로 발생할 수 있지만 스캐 폴딩 대상 프로젝트에 EFCore가 설치되어 있지 않은 경우 가장 멍청한 것입니다.
패키지 관리자 콘솔에는 Default project
드롭 다운이 있으며 예상되는 변경 사항을 놓친 경우 새 파일이 끝날 수 있습니다.
드롭 다운 설정을 기억하는 것보다 더 나은 솔루션은 -Project
스캐 폴딩 명령에 스위치를 추가하는 것 입니다.
이것은 내가 사용하는 전체 명령입니다.
EF Core 2의 경우
Scaffold-DbContext -Connection "Server = (local); Database = DefenderRRCart; Integrated Security = True; Trusted_Connection = True;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir RRStoreContext.Models -context RRStoreContext-프로젝트 RR.DataAccess -force
EF Core 3의 경우
dotnet ef dbcontext scaffold "Server = tcp : XXXXX.database.windows.net, 1433; Initial Catalog = DATABASE_NAME; Persist Security Info = False; User ID = USERNAME; Password = PASSWORD; MultipleActiveResultSets = False; Encrypt = True; TrustServerCertificate = False ; 연결 시간 초과 = 30; " Microsoft.EntityFrameworkCore.SqlServer -o DB.Models --context-dir DB.Contexts --context RRDBContext --project RR.EF.csproj --force --use-database-names
참고 : -force는 파일을 덮어 쓰지만 더 이상 존재하지 않는 파일은 제거하지 않습니다. DB에서 테이블을 삭제하는 경우 이전 항목 파일을 직접 삭제해야합니다 (Explorer에서 날짜별로 정렬하고 이전 항목을 삭제하면됩니다).
전체 비계 참조 :
EF 핵심 2 :
https://docs.efproject.net/en/latest/miscellaneous/cli/powershell.html#scaffold-dbcontext (이
EF 핵심 3 :
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet