Entity Framework Core araçları başvurusu-.NET Core CLI

Entity Framework Core için komut satırı arabirimi (CLı) araçları tasarım zamanı geliştirme görevlerini gerçekleştirmeye yöneliktir. Örneğin, geçişleroluşturur, geçişleri uygular ve var olan bir veritabanını temel alan bir model için kod oluşturur. Komutlar, .NET Core SDKbir parçası olan platformlar arası DotNet komutuna bir uzantıdır. Bu araçlar .NET Core projeleriyle birlikte çalışır.

Visual Studio kullanırken, clı araçları yerine Paket Yöneticisi konsolu araçlarını kullanmayı göz önünde bulundurun. konsol araçlarını otomatik olarak Paket Yöneticisi:

  • Paket Yöneticisi konsolunda seçili olan geçerli projeyle birlikte çalışarak, dizinleri el ile geçmeniz gerekmeden.
  • Komut tamamlandıktan sonra komut tarafından oluşturulan dosyaları açar.
  • Komutların, parametrelerin, proje adlarının, bağlam türlerinin ve geçiş adlarının sekme ile tamamlanmasını sağlar.

Araçları yükleme

dotnet ef , genel veya yerel bir araç olarak yüklenebilir. Çoğu geliştirici dotnet ef , aşağıdaki komutu kullanarak yüklemeyi küresel bir araç olarak tercih eder:

dotnet tool install --global dotnet-ef

Bunu yerel bir araç olarak kullanmak için, bir araç bildirim dosyasıkullanarak bunu araç bağımlılığı olarak bildiren bir projenin bağımlılıklarını geri yükleyin.

Aşağıdaki komutu kullanarak aracı güncelleştirin:

dotnet tool update --global dotnet-ef

Araçları belirli bir projede kullanabilmeniz Microsoft.EntityFrameworkCore.Design için, paketi buna eklemeniz gerekir.

dotnet add package Microsoft.EntityFrameworkCore.Design

Yüklemeyi doğrulama

EF Core CLı araçlarının düzgün yüklendiğini doğrulamak için aşağıdaki komutları çalıştırın:

dotnet ef

Komutun çıktısı kullanımdaki araçların sürümünü tanımlar:


                     _/\__
               ---==/    \\
         ___  ___   |.    \|\
        | __|| __|  |  )   \\\
        | _| | _|   \_/ |  //|\\
        |___||_|       /   \\\/\\

Entity Framework Core .NET Command-line Tools 2.1.3-rtm-32065

<Usage documentation follows, not shown.>

Araçları güncelleştirme

dotnet tool update --global dotnet-efGenel araçları kullanılabilir en son sürüme güncelleştirmek için kullanın. Projenize yerel olarak yüklenmiş araçlar varsa dotnet tool update dotnet-ef . Komutunuz içine ekleyerek belirli bir sürümü yükler --version <VERSION> . Daha fazla bilgi için DotNet aracı belgelerinin güncelleştirme bölümüne bakın.

Araçları kullanma

Araçları kullanmadan önce, bir başlangıç projesi oluşturmanız veya ortamı ayarlamanız gerekebilir.

Hedef proje ve başlangıç projesi

Komutlar bir projeye ve bir başlangıç projesinebaşvurur.

  • Ayrıca, komutların dosya eklemesi veya kaldırması nedeniyle Projehedef proje olarak da bilinir. Varsayılan olarak, geçerli dizindeki proje hedef projem tir. Seçeneğini kullanarak, hedef proje olarak farklı bir proje belirtebilirsiniz --project .

  • Başlangıç projesi , araçların oluşturup çalıştırdığı bir. Araçlar, veritabanı bağlantı dizesi ve modelin yapılandırması gibi proje hakkında bilgi almak için tasarım zamanında uygulama kodu yürütmeniz gerekir. Varsayılan olarak, geçerli dizindeki proje başlangıç projem ' dir. Seçeneğini kullanarak, başlangıç projesi olarak farklı bir proje belirtebilirsiniz --startup-project .

Başlangıç projesi ve hedef proje genellikle aynı projem. Farklı projeler oldukları tipik bir senaryo şunlardır:

  • EF Core bağlamı ve varlık sınıfları bir .NET Core sınıf kitaplığında bulunur.
  • .NET Core konsol uygulaması veya Web uygulaması, sınıf kitaplığına başvurur.

Geçiş kodunu, EF Core bağlamından ayrı bir sınıf kitaplığına yerleştirmekde mümkündür.

Diğer hedef çerçeveler

clı araçları .net Core projeleriyle ve .NET Framework projeleriyle çalışır. .NET Standard sınıf kitaplığındaki EF Core modeli olan uygulamalarda .net Core veya .NET Framework projesi bulunmayabilir. örneğin, bu, Xamarin ve Evrensel Windows Platformu uygulamaları için geçerlidir. Bu gibi durumlarda, yalnızca amacı araçlar için başlangıç projesi olarak davranacak bir .NET Core konsol uygulaması projesi oluşturabilirsiniz. Proje, gerçek kod içermeyen bir kukla proje olabilir; yalnızca araç için bir hedef sağlamanız gerekir.

İşlevsiz bir proje neden gereklidir? Daha önce belirtildiği gibi, araçların uygulama kodunu tasarım zamanında yürütmesi gerekir. Bunu yapmak için .NET Core çalışma zamanını kullanmaları gerekir. EF Core modeli .net Core veya .NET Framework hedefleyen bir projede olduğunda, EF Core araçları projeden çalışma zamanını ödünç. EF Core modeli .NET Standard bir sınıf kitaplığınlarsa bunu yapamazlar. .NET Standard gerçek bir .NET uygulamasını değil; .NET uygulamalarının desteklemesi gereken bir API kümesine yönelik bir belirtimdir. Bu nedenle .NET Standard uygulama kodunu yürütmek için EF Core araçları yeterli değildir. Başlangıç projesi olarak kullanmak için oluşturduğunuz kukla proje, araçların .NET Standard sınıf kitaplığını yükleyebileceği somut bir hedef platform sağlar.

ASP.NET Core ortamı

ASP.NET Core projelerine yönelik ortamı belirtmek için, komutları çalıştırmadan önce ASPNETCORE_ENVIRONMENT ortam değişkenini ayarlayın.

EF Core 5,0 ' den başlayarak, diğer bağımsız değişkenler de program. CreateHostBuilder öğesine geçirilebilir ve bu da ortamı komut satırında belirtmenize olanak sağlar:

dotnet ef database update -- --environment Production

İpucu

--Belirteç, dotnet ef bir bağımsız değişken olarak takip eden her şeyi kabul etmek ve bunları seçenekler olarak ayrıştırmaya çalışır. Tarafından kullanılmayan tüm ek bağımsız değişkenler dotnet ef uygulamaya iletilir.

Ortak seçenekler

Seçenek Kısadır Description
--json JSON çıkışını göster.
--context <DBCONTEXT> -c DbContextKullanılacak sınıf. Yalnızca sınıf adı veya ad alanları ile tam nitelikli. Bu seçenek atlanırsa, EF Core bağlam sınıfını bulur. Birden çok bağlam sınıfı varsa, bu seçenek gereklidir.
--project <PROJECT> -p Hedef projenin proje klasörünün göreli yolu. Varsayılan değer geçerli klasördür.
--startup-project <PROJECT> -s Başlangıç projesinin proje klasörünün göreli yolu. Varsayılan değer geçerli klasördür.
--framework <FRAMEWORK> Hedef çerçeveIçin hedef çerçeve bilinen adı. Proje dosyası birden çok hedef çerçeve belirttiğinde ve bunlardan birini seçmek istediğinizde kullanın.
--configuration <CONFIGURATION> Derleme yapılandırması, örneğin: Debug veya Release .
--runtime <IDENTIFIER> Paketlerinin geri yükleneceği hedef çalışma zamanının tanımlayıcısı. Çalışma zamanı tanımlayıcıları (RID 'Ler) listesi için bkz. RID kataloğu.
--no-build Projeyi derleme. Derleme güncel olduğunda kullanılmak üzere tasarlanmıştır.
--help -h Yardım bilgilerini göster.
--verbose -v Ayrıntılı çıktıyı göster.
--no-color Çıktıyı renklendirme.
--prefix-output Düzeydeki ön ek çıkışı.

EF Core 5,0 ' den başlayarak, tüm ek bağımsız değişkenler uygulamaya geçirilir.

dotnet ef database drop

Veritabanını siler.

Seçenekler:

Seçenek Kısadır Description
--force -f Onaylama.
--dry-run Hangi veritabanının bırakılacağını gösterir, ancak onları düşürüyor.

Ortak seçenekler yukarıda listelenmiştir.

dotnet ef database update

Veritabanını son geçişe veya belirtilen bir geçişe güncelleştirir.

Değişkenlerinden

Bağımsız Değişken Description
<MIGRATION> Hedef geçişi. Geçişler ad veya kimlikle tanımlandı. 0 sayısı, ilk geçiş öncesinde anlamına gelen ve tüm geçişlerin geri döndürülmeden önceye neden olduğu özel bir durum olabilir. Geçiş belirtilmezse, komut varsayılan olarak son geçiştir.

Seçenekler:

Seçenek Açıklama
--connection <CONNECTION> Veritabanına bağlantı dizesi. varsayılan olarak veya içinde belirtilen AddDbContextOnConfiguring değerdir. 5.0 EF Core eklendi.

Yaygın seçenekler yukarıda listelenmiştir.

Aşağıdaki örnekler veritabanını belirtilen bir geçişe güncelleştirmektedir. birincisi geçiş adını, ikincisi ise geçiş kimliğini ve belirtilen bağlantıyı kullanır:

dotnet ef database update InitialCreate
dotnet ef database update 20180904195021_InitialCreate --connection your_connection_string

dotnet ef dbcontext info

Bir tür hakkında bilgi DbContext alır.

Yaygın seçenekler yukarıda listelenmiştir.

dotnet ef dbcontext list

Kullanılabilir türleri DbContext listeler.

Yaygın seçenekler yukarıda listelenmiştir.

dotnet ef dbcontext optimize

tarafından kullanılan modelin derlenmiş bir sürümünü DbContext üretir. 6. EF Core eklendi.

Daha fazla bilgi için bkz. Derlenmiş modeller.

Seçenekler:

Seçenek Kısa Description
--output-dir <PATH> -o Dosyaların içine konma dizini. Yollar proje dizinine göredir.
--namespace <NAMESPACE> -n Oluşturulan tüm sınıflar için kullanmak üzere ad alanı. Varsayılan olarak kök ad alanı ve çıkış dizininden artı CompiledModels oluşturulur.

Yaygın seçenekler yukarıda listelenmiştir.

Aşağıdaki örnek varsayılan ayarları kullanır ve projede yalnızca bir tane varsa DbContext çalışır:

dotnet ef dbcontext optimize

Aşağıdaki örnek, modeli belirtilen adla bağlam için iyiler ve ayrı bir klasöre ve ad alanına yer verir:

dotnet ef dbcontext optimize -o Models -n BlogModels -c BlogContext

dotnet ef dbcontext scaffold

Bir veritabanı için ve DbContext varlık türleri için kod oluşturur. Bu komutun bir varlık türü oluşturması için veritabanı tablosunda birincil anahtar olması gerekir.

Bağımsız değişken:

Bağımsız Değişken Description
<CONNECTION> Veritabanına bağlantı dizesi. 2.x ASP.NET Core için değer, bağlantı dizesinin name= > adı olabilir. Bu durumda ad, proje için ayarlanmış yapılandırma kaynaklarından gelir.
<PROVIDER> Kullanmak için sağlayıcı. Genellikle bu, NuGet adıdır, örneğin: Microsoft.EntityFrameworkCore.SqlServer .

Seçenekler:

Seçenek Kısa Description
--data-annotations -d Modeli yapılandırmak için öznitelikleri kullanın (mümkün olduğunca). Bu seçenek atlanırsa yalnızca fluent API kullanılır.
--context <NAME> -c Oluşturulan DbContext sınıfın adı.
--context-dir <PATH> Sınıf dosyasının içine DbContext konma dizini. Yollar proje dizinine göredir. Ad alanları, klasör adlarından türetilen.
--context-namespace <NAMESPACE> Oluşturulan sınıf için kullanmak üzere ad DbContext alanı. Not: geçersiz --namespace kılar. 5.0 EF Core eklendi.
--force -f Mevcut dosyaların üzerine yaz.
--output-dir <PATH> -o Varlık sınıfı dosyalarını içine koyan dizin. Yollar proje dizinine göredir.
--namespace <NAMESPACE> -n Oluşturulan tüm sınıflar için kullanmak üzere ad alanı. Varsayılan olarak kök ad alanı ve çıkış dizininden oluşturulur. 5.0 EF Core eklendi.
--schema <SCHEMA_NAME>... Varlık türleri oluşturmak için tabloların şemaları. Birden çok şema belirtmek için, her biri --schema için tekrarlayın. Bu seçenek atlanırsa, tüm şemalar dahil edilir.
--table <TABLE_NAME>... -t Varlık türleri oluşturmak için tablolar. Birden çok tablo belirtmek için, her biri -t için --table veya tekrarlayın. Bu seçenek atlanırsa tüm tablolar dahil edilir.
--use-database-names Tablo ve sütun adlarını tam olarak veritabanında görünen şekilde kullanın. Bu seçenek atlanırsa, veritabanı adları C# ad stili kurallarına daha yakından uygun olacak şekilde değiştirilir.
--no-onconfiguring Oluşturulan sınıfta OnConfiguring yönteminin neslini DbContext bastırıyor. 5.0 EF Core eklendi.
--no-pluralize Çoğullaştırıcıyı kullanma. 5.0 EF Core eklendi

Yaygın seçenekler yukarıda listelenmiştir.

Aşağıdaki örnek tüm şemaların ve tabloların iskelelerini oluşturur ve yeni dosyaları Models klasörüne koyar.

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models

Aşağıdaki örnek yalnızca seçili tabloların iskelelerini oluşturur ve bağlamı belirtilen ad ve ad alanına sahip ayrı bir klasörde oluşturur:

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -t Blog -t Post --context-dir Context -c BlogContext --context-namespace New.Namespace

Aşağıdaki örnek, Gizli Dizi Yöneticisi aracını kullanarak projenin yapılandırma kümesinden bağlantı dizesini okur.

dotnet user-secrets set ConnectionStrings:Blogging "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Blogging"
dotnet ef dbcontext scaffold Name=ConnectionStrings:Blogging Microsoft.EntityFrameworkCore.SqlServer

Aşağıdaki örnek, bir yöntemin iskelesi OnConfiguring esner. Bu, DbContext'i sınıfının dışında yapılandırmak istediğiniz zaman yararlı olabilir. Örneğin, ASP.NET Core genellikle Startup.ConfigureServices içinde yapılandırabilirsiniz. 5.0 EF Core eklendi.

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;User Id=myUsername;Password=myPassword;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring

dotnet ef dbcontext script

DbContext'SQL bir betik oluşturulur. Tüm geçişleri atlar.

Seçenekler:

Seçenek Kısa Description
--output <FILE> -o Sonucun yazacak dosyası.

Yaygın seçenekler yukarıda listelenmiştir.

dotnet ef migrations add

Yeni bir geçiş ekler.

Bağımsız değişken:

Bağımsız Değişken Description
<NAME> Geçişin adı.

Seçenekler:

Seçenek Kısa Description
--output-dir <PATH> -o Dizin, dosyaları çıkış olarak kullanmak için kullanır. Yollar hedef proje dizinine göredir. Varsayılan olarak "Geçişler" kullanılır.
--namespace <NAMESPACE> -n Oluşturulan sınıflar için kullanmak üzere ad alanı. Varsayılan olarak çıkış dizininden oluşturulur. 5.0 EF Core eklendi.

Yaygın seçenekler yukarıda listelenmiştir.

dotnet ef migrations bundle

Veritabanını güncelleştirmek için yürütülebilir dosya oluşturur.

Seçenekler:

Seçenek Kısa Description
--output <FILE> -o Oluşturulacak yürütülebilir dosyanın yolu.
--force -f Mevcut dosyaların üzerine yaz.
--self-contained Ayrıca .NET çalışma zamanının makineye yüklenmiş olması gerekmayacak şekilde paketle.
--target-runtime <RUNTIME_IDENTIFIER> -r Paket için hedef çalışma zamanı.

Yaygın seçenekler yukarıda listelenmiştir.

dotnet ef migrations list

Kullanılabilir geçişleri listeler.

Seçenekler:

Seçenek Açıklama
--connection <CONNECTION> Veritabanına bağlantı dizesi. Varsayılan değer AddDbContext veya OnConfiguring içinde belirtilen değerdir. 5.0 EF Core eklendi.
--no-connect Veritabanına bağlanmayın. 5.0 EF Core eklendi.

Yaygın seçenekler yukarıda listelenmiştir.

dotnet ef migrations remove

En son geçiş için yapılan kod değişikliklerini geri alan son geçişi kaldırır.

Seçenekler:

Seçenek Kısa Description
--force -f En son geçiş için yapılan kod ve veritabanı değişikliklerini geri döndürün. Veritabanına bağlanırken hata oluşursa yalnızca kod değişiklikleri geri alma devam eder.

Yaygın seçenekler yukarıda listelenmiştir.

dotnet ef migrations script

Geçişlerden SQL betiği üretir.

Bağımsız değişken:

Bağımsız Değişken Description
<FROM> Başlangıç geçişi. Geçişler ad veya kimlikle tanımlandı. 0 sayısı, ilk geçiş öncesinde anlamına gelen özel bir durum. Varsayılan değer 0'dır.
<TO> Bitiş geçişi. Varsayılan olarak son geçiş kullanılır.

Seçenekler:

Seçenek Kısa Description
--output <FILE> -o Betiğin yazacak dosyası.
--idempotent -i Herhangi bir geçişte veritabanında kullanılan bir betik oluşturun.
--no-transactions İşlem deyimleri SQL üretin. 5.0 EF Core eklendi.

Yaygın seçenekler yukarıda listelenmiştir.

Aşağıdaki örnek InitialCreate geçişi için bir betik oluşturur:

dotnet ef migrations script 0 InitialCreate

Aşağıdaki örnek, InitialCreate geçişinin ardından tüm geçişler için bir betik oluşturur.

dotnet ef migrations script 20180904195021_InitialCreate

Ek kaynaklar