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 konsol araçlarını kullanmayı düşünün. Paket Yöneticisi konsol araçları otomatik olarak:

  • , Dizin el ile geçiş yapmanız gerekmeden, Paket Yöneticisi konsolunda seçili olan geçerli projeyle birlikte çalışarak.
  • 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ıç projesine başvurur.

  • Ayrıca, komutların dosya eklemesi veya kaldırması nedeniyle Proje hedef 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 — ve 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, ada veya KIMLIĞE göre tanımlanabilir. 0 sayısı, ilk geçişten önceki ve tüm geçişlerin geri alınmasına neden olan özel bir durumdur. Hiçbir geçiş belirtilmemişse, komut en son geçişe varsayılan olarak ayarlanır.

Seçenekler:

Seçenek Açıklama
--connection <CONNECTION> Veritabanına bağlantı dizesi. Veya içinde belirtilen varsayılan değer AddDbContext OnConfiguring . EF Core 5,0 ' ye eklenmiştir.

Ortak seçenekler yukarıda listelenmiştir.

Aşağıdaki örnekler veritabanını belirtilen bir geçişe güncelleştirir. İlki 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 alır DbContext .

Ortak seçenekler yukarıda listelenmiştir.

dotnet ef dbcontext list

Kullanılabilir DbContext türleri listeler.

Ortak seçenekler yukarıda listelenmiştir.

dotnet ef dbcontext scaffold

Bir DbContext veritabanı için ve varlık türleri için kod üretir. Bu komutun bir varlık türü oluşturması için, veritabanı tablosunun bir birincil anahtarı olmalıdır.

Değişkenlerinden

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

Seçenekler:

Seçenek Kısadır Description
--data-annotations -d Modeli yapılandırmak için öznitelikleri kullanın (mümkün olduğunda). Bu seçenek atlanırsa yalnızca Fluent API kullanılır.
--context <NAME> -c DbContextOluşturulacak sınıfın adı.
--context-dir <PATH> DbContextSınıf dosyasının içine yerleştirilecek dizin. Yollar proje dizinine göredir. Ad alanları, Klasör adlarından türetilir.
--context-namespace <NAMESPACE> Oluşturulan sınıf için kullanılacak ad alanı DbContext . Note: geçersiz kılmalar --namespace . EF Core 5,0 ' ye eklenmiştir.
--force -f Varolan dosyaların üzerine yaz.
--output-dir <PATH> -o İçinde varlık sınıfı dosyalarını yerleştirmek için dizin. Yollar proje dizinine göredir.
--namespace <NAMESPACE> -n Tüm oluşturulan sınıflar için kullanılacak ad alanı. Kök ad alanından ve çıkış dizininden varsayılan olarak oluşturulur. EF Core 5,0 ' ye eklenmiştir.
--schema <SCHEMA_NAME>... İçin varlık türleri oluşturulacak tablo şemaları. Birden çok şema belirtmek için, --schema her biri için yineleyin. Bu seçenek atlanırsa, tüm şemalar dahil edilir.
--table <TABLE_NAME>... -t İçin varlık türleri oluşturulacak tablolar. Birden çok tablo belirtmek için, -t veya --table her biri için yineleyin. 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ündükleri gibi kullanın. Bu seçenek atlanırsa, veritabanı adları C# ad stili kurallarına daha yakından uyum sağlamak için değiştirilir.
--no-onconfiguring OnConfiguringOluşturulan sınıfta yönteminin oluşturulmasını engeller DbContext . EF Core 5,0 ' ye eklenmiştir.
--no-pluralize Pluralizer kullanmayın. EF Core 5,0 eklendi

Ortak seçenekler yukarıda listelenmiştir.

Aşağıdaki örnek, tüm şemaları ve tabloları uygular ve yeni dosyaları modeller 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ı ve bağlamı belirtilen bir ad ve ad alanı ile 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 yönetici aracınıkullanarak proje 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öntemi yapı iskelesi atlar OnConfiguring . Bu, DbContext sınıfının dışında yapılandırmak istediğinizde yararlı olabilir. Örneğin ASP.NET Core uygulamalar genellikle onu Startup.ConfigureServices içinde yapılandırır. EF Core 5,0 ' ye eklenmiştir.

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

dotnet ef dbcontext script

DbContext 'ten bir SQL betiği oluşturur. Tüm geçişleri atlar. EF Core 3,0 ' ye eklenmiştir.

Seçenekler:

Seçenek Kısadır Description
--output <FILE> -o Sonucun yazılacağı dosya.

Ortak seçenekler yukarıda listelenmiştir.

dotnet ef migrations add

Yeni bir geçiş ekler.

Değişkenlerinden

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

Seçenekler:

Seçenek Kısadır Description
--output-dir <PATH> -o Dizin, dosyaların çıktısını almak için kullanılır. Yollar, hedef proje dizini ile ilişkilidir. Varsayılan olarak "geçişler" olur.
--namespace <NAMESPACE> -n Oluşturulan sınıflar için kullanılacak ad alanı. Varsayılan olarak çıkış dizininden oluşturulur. EF Core 5,0 ' ye eklenmiştir.

Ortak 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. AddDbContext veya Onyapılandırılmasında belirtilen varsayılan değeri belirler. EF Core 5,0 ' ye eklenmiştir.
--no-connect Veritabanına bağlanma. EF Core 5,0 ' ye eklenmiştir.

Ortak seçenekler yukarıda listelenmiştir.

dotnet ef migrations remove

Son geçişi kaldırır ve en son geçiş için yapılan kod değişikliklerini geri alarak geri döndürülüyor.

Seçenekler:

Seçenek Kısadır Description
--force -f En son geçiş için yapılan her iki kodu ve veritabanı değişikliğini geri alarak en son geçişi geri alın. Veritabanına bağlanırken bir hata oluşursa yalnızca kod değişikliklerini geri alma işlemi devam eder.

Ortak seçenekler yukarıda listelenmiştir.

dotnet ef migrations script

Geçişlerden bir SQL betiği oluşturur.

Değişkenlerinden

Bağımsız Değişken Description
<FROM> Geçiş başlatılıyor. Geçişler, ada veya KIMLIĞE göre tanımlanabilir. 0 sayısı, ilk geçişten önceki anlamına gelen özel bir durumdur. Varsayılan değer 0 ' dır.
<TO> Son geçiş. Son geçişin varsayılan değeri.

Seçenekler:

Seçenek Kısadır Description
--output <FILE> -o Betiğe yazılacak dosya.
--idempotent -i Herhangi bir geçişte veritabanında kullanılabilecek bir betik oluşturun.
--no-transactions SQL işlem deyimleri oluşturmamayın. EF Core 5,0 ' ye eklenmiştir.

Ortak seçenekler yukarıda listelenmiştir.

Aşağıdaki örnek, ınitialcreate geçişi için bir komut dosyası oluşturur:

dotnet ef migrations script 0 InitialCreate

Aşağıdaki örnek, ınitialcreate geçişinden sonra tüm geçişler için bir komut dosyası oluşturur.

dotnet ef migrations script 20180904195021_InitialCreate

Ek kaynaklar