Entity Framework Core MSBuild 통합
EF 9부터 MSBuild 작업을 사용하여 프로젝트가 빌드되거나 게시될 때 컴파일된 모델 및 미리 컴파일된 쿼리를 자동으로 생성할 수 있습니다. 이는 주로 NativeAOT 게시와 함께 사용됩니다.
Warning
NativeAOT 지원 및 MSBuild 통합은 실험적 기능이며 프로덕션 사용에는 아직 적합하지 않습니다.
작업 설치
시작하려면 Microsoft.EntityFrameworkCore.Tasks NuGet 패키지를 설치합니다. 예시:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
참고 항목
생성된 파일로 컴파일해야 하는 모든 프로젝트는 NuGet 패키지를 참조해야 하며 기본적으로 전이적이지 않습니다.
작업 사용
프로젝트가 지정 <PublishAot>true</PublishAot>
하는 경우 기본적으로 MSBuild 작업은 게시하는 동안 컴파일된 모델 및 미리 컴파일된 쿼리를 생성합니다. 그렇지 않으면 다음 속성을 설정하여 생성 동작을 제어할 수 있습니다.
MSBuild 속성 | 설명 |
---|---|
EFOptimizeContext | MSBuild 통합을 true 사용하도록 설정합니다. |
EFScaffoldModelStage | 컴파일된 모델을 생성할 단계를 나타내기 위해 publish build none 설정합니다. 기본값은 publish 입니다. |
EFPrecompileQueriesStage | publish build none 미리 컴파일된 쿼리가 생성될 스테이지를 나타내려면 로 설정합니다. 기본값은 publish 입니다. |
DbContextName | 사용할 파생 DbContext 클래스입니다. 네임스페이스를 사용하여 클래스 이름만 또는 정규화됩니다. 이 옵션을 생략하면 EF Core는 프로젝트의 모든 컨텍스트 클래스에 대해 생성을 수행합니다. |
EFTargetNamespace | 생성된 모든 클래스에 사용할 네임스페이스입니다. 이 옵션을 생략하면 EF Core에서 .를 사용합니다 $(RootNamespace) . |
EFOutputDir | 프로젝트를 컴파일하기 전에 생성된 파일을 넣을 폴더입니다. 이 옵션을 생략하면 EF Core에서 .를 사용합니다 $(IntermediateOutputPath) . |
EFNullable | 생성된 코드에서 nullable 참조 형식을 사용할지 여부입니다. 이 옵션을 생략하면 EF Core에서 .를 사용합니다 $(Nullable) . |
제한 사항
- 이 방법을 사용할 때는 역 빌드 종속성을 도입하기 때문에 다른 시작 프로젝트를 지정할 수 없습니다. 즉, 컨텍스트 프로젝트는 구성 측면에서 자동 학습되어야 하므로 앱이 일반적으로 다른 프로젝트에서 호스트 작성기를 사용하여 컨텍스트를 구성하는 경우 컨텍스트 프로젝트에서 IDesignTimeDbContextFactory<TContext>를 구현해야 합니다.
- 컴파일된 모델을 생성하기 전에 프로젝트를 컴파일할 수 있어야 하므로 이 방법은 컴파일된 모델의 사용자 지정을 위한 부분 메서드 구현을 지원하지 않습니다.
- 현재 이 작업은 항상 NativeAOT에 필요한 컴파일된 모델에서 추가 코드를 생성합니다. NativeAOT 를 사용하도록 설정할 계획이 없는 경우 CLI 도구를 사용하여 컴파일된 모델을 생성합니다.
추가 리소스
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET