Entity Framework Core MSBuild tümleştirmesi
EF 9'dan başlayarak, derlenmiş modeli ve önceden derlenmiş sorguları proje oluşturulduğunda veya yayımlandığında otomatik olarak oluşturmak için MSBuild görevi kullanabilirsiniz. Bu, temel olarak NativeAOT yayımlama ile birlikte kullanılmaya yöneliktir.
Uyarı
NativeAOT desteği ve MSBuild tümleştirmesi deneysel özelliklerdir ve henüz üretim kullanımı için uygun değildir.
Görevleri yükleme
Başlamak için Microsoft.EntityFrameworkCore.Tasks NuGet paketini yükleyin. Örneğin:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
Not
Oluşturulan dosyalarla derlenmesi gereken her proje NuGet paketine başvurmalıdır; varsayılan olarak geçişli değildir.
Görevleri kullanma
Proje belirtirse <PublishAot>true</PublishAot>
, MSBuild görevi varsayılan olarak yayımlama sırasında derlenmiş bir model ve önceden derlenmiş sorgular oluşturur. Aksi takdirde, oluşturma davranışını denetlemek için aşağıdaki özellikleri ayarlayabilirsiniz:
MSBuild özelliği | Açıklama |
---|---|
EFOptimizeContext |
true MSBuild tümleştirmesini etkinleştirmek için olarak ayarlayın. |
EFScaffoldModelStage |
publish derlenen modelin hangi aşamada oluşturulacağını belirtmek için veya build none olarak ayarlayın. varsayılan değeridir publish . |
EFPrecompileQueriesStage |
publish
build olarak ayarlayın veya none önceden derlenmiş sorguların hangi aşamada oluşturulacağını belirtin. varsayılan değeridir publish . |
DbContextName | Kullanılacak türetilmiş DbContext sınıf. Yalnızca sınıf adı veya ad alanlarıyla tam olarak nitelenmiş. Bu seçenek atlanırsa EF Core, projedeki tüm bağlam sınıfları için oluşturma gerçekleştirir. |
EFTargetNamespace | Oluşturulan tüm sınıflar için kullanılacak ad alanı. Bu seçenek atlanırsa EF Core kullanır $(RootNamespace) . |
EFOutputDir | Oluşturulan dosyaları proje derilmeden önce koyacak klasör. Bu seçenek atlanırsa EF Core kullanır $(IntermediateOutputPath) . |
EFNullable | Oluşturulan kodda null atanabilir başvuru türlerinin kullanılıp kullanılmayacağı. Bu seçenek atlanırsa EF Core kullanır $(Nullable) . |
Sınırlamalar
-
publish
aşamasında tümleştirmeyi kullanırken başlangıç projesinde rid'i de ayarlayın (örneğin, <RuntimeIdentifier>win-x64</RuntimeIdentifier>) - Ters derleme bağımlılığına neden olacağından bu yaklaşım kullanılırken farklı bir başlangıç projesi belirtilemez. Bu, bağlam projesinin yapılandırma açısından otomatik olarak üretilmesi gerektiği anlamına gelir; dolayısıyla uygulamanız normalde farklı bir projede konak oluşturucu kullanarak bağlamı yapılandırırsa bağlam projesinde IDesignTimeDbContextFactory<TContext> uygulamanız gerekir.
- Derlenen model oluşturulmadan önce projenin derlenebilir olması gerektiğinden, bu yaklaşım derlenen modeli özelleştirmek için kısmi yöntem uygulamalarını desteklemez.
- Şu anda, bu her zaman nativeAOT için gerekli olan derlenmiş modelde ek kod oluşturur. NativeAOT'yi etkinleştirmeyi planlamıyorsanız, CLI araçlarını kullanarak derlenmiş modeli oluşturun.