Aracılığıyla paylaş


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 publishderlenen modelin hangi aşamada oluşturulacağını belirtmek için veya buildnone 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.

Ek kaynaklar