Visual Studio Entity Framework Core araçları başvuru Paket Yöneticisi konsolu

tasarım zamanı geliştirme görevlerini gerçekleştirmek Entity Framework Core için Paket Yöneticisi konsolu (PMC) araçları. Ö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ı Paket Yöneticisi konsolunukullanarak Visual Studio içinde çalışır. bu araçlar hem .NET Framework hem de .net Core projeleriyle çalışır.

Visual Studio kullanmıyorsanız, bunun yerine EF Core komut satırı araçlarının kullanılması önerilir. .NET Core CLI araçları platformlar arası ve komut istemi içinde çalıştırılır.

Araçları yükleme

Paket Yöneticisi konsolundaaşağıdaki komutu çalıştırarak Paket Yöneticisi konsol araçlarını yükler:

Install-Package Microsoft.EntityFrameworkCore.Tools

Paket Yöneticisi konsolundaaşağıdaki komutu çalıştırarak araçları güncelleştirin.

Update-Package Microsoft.EntityFrameworkCore.Tools

Yüklemeyi doğrulama

Şu komutu çalıştırarak araçların yüklendiğini doğrulayın:

Get-Help about_EntityFrameworkCore

Çıktı şuna benzer (hangi araçların hangi sürümünü kullandığınızı söylemez):


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

TOPIC
    about_EntityFrameworkCore

SHORT DESCRIPTION
    Provides information about the Entity Framework Core Package Manager Console Tools.

<A list of available commands follows, omitted here.>

Araçları kullanma

Araçları kullanmadan önce:

  • Hedef ve başlangıç projesi arasındaki farkı anlayın.
  • .NET Standard sınıf kitaplıklarıyla araçları nasıl kullanacağınızı öğrenin.
  • ASP.NET Core projeler için ortamı ayarlayın.

Hedef 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, Paket Yöneticisi konsolunda seçilen varsayılan proje hedef projem tir. Parametresini 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, Çözüm Gezgini başlangıç Project başlangıç projem ' dir. Parametresini kullanarak, başlangıç projesi olarak farklı bir proje belirtebilirsiniz -StartupProject .

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

Paket Yöneticisi konsol araçları .net Core veya .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 olan bir .net Core veya .NET Framework 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 veya .NET Framework ç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 env: ASPNETCORE_ENVIRONMENT 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:

Update-Database -Args '--environment Production'

Ortak Parametreler

Aşağıdaki tabloda tüm EF Core komutlarında ortak olan parametreler gösterilmektedir:

Parametre Açıklama
-Context <String> DbContextKullanılacak sınıf. Yalnızca sınıf adı veya ad alanları ile tam nitelikli. Bu parametre atlanırsa, EF Core bağlam sınıfını bulur. Birden çok bağlam sınıfı varsa, bu parametre gereklidir.
-Project <String> Hedef proje. bu parametre atlanırsa, Paket Yöneticisi konsolununvarsayılan projesi hedef proje olarak kullanılır.
-StartupProject <String> Başlangıç projesi. Bu parametre atlanırsa, çözüm özelliklerindekiBaşlangıç projesi hedef proje olarak kullanılır.
-Args <String> Uygulamaya geçirilen bağımsız değişkenler. EF Core 5,0 ' ye eklenmiştir.
-Verbose Ayrıntılı çıktıyı göster.

Bir komutla ilgili yardım bilgilerini göstermek için PowerShell Get-Help komutunu kullanın.

İpucu

Context, Project Ve StartupProject parametreleri sekme genişletmeyi destekler.

Add-Migration

Yeni bir geçiş ekler.

Parametreler:

Parametre Açıklama
-Name <String> Geçişin adı. Bu bir Konumsal parametredir ve gereklidir.
-OutputDir <String> 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 <String> 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 parametreler yukarıda listelenmiştir.

Bundle-Migration

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

Parametreler:

Parametre Açıklama
-Output <String> Oluşturulacak yürütülebilir dosyanın yolu.
-Force Varolan dosyaların üzerine yaz.
-SelfContained Ayrıca, makinede yüklü olması için .NET çalışma zamanını paketleyin.
-TargetRuntime <String> İçin paketlenecek hedef çalışma zamanı.
-Framework <String> Hedef çerçeve. Projedeki ilk değeri varsayılan olarak belirler.

Ortak parametreler yukarıda listelenmiştir.

Drop-Database

Veritabanını bırakır.

Parametreler:

Parametre Açıklama
-WhatIf Hangi veritabanının bırakılacağını gösterir, ancak onları düşürüyor.

Ortak parametreler yukarıda listelenmiştir.

Get-DbContext

Kullanılabilir türler hakkında bilgi listeler ve alır DbContext .

Ortak parametreler yukarıda listelenmiştir.

Get-Migration

Kullanılabilir geçişleri listeler. EF Core 5,0 ' ye eklenmiştir.

Parametreler:

Parametre Açıklama
-Connection <String> Veritabanına bağlantı dizesi. AddDbContext veya Onyapılandırılmasında belirtilen varsayılan değeri belirler.
-NoConnect Veritabanına bağlanma.

Ortak parametreler yukarıda listelenmiştir.

Optimize-DbContext

Tarafından kullanılan bir modelin derlenmiş bir sürümünü oluşturur DbContext . EF Core 6 ' ya eklendi.

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

Parametreler:

Parametre Açıklama
-OutputDir <String> Dosyaları içine koyabileceğiniz dizin. Yollar proje dizinine göredir.
-Namespace <String> Tüm oluşturulan sınıflar için kullanılacak ad alanı. Kök ad alanından ve çıkış dizininden oluşturulan varsayılan değer CompiledModels .

Ortak parametreler yukarıda listelenmiştir.

Yalnızca projede bir tane varsa, varsayılan değerleri kullanan örnek DbContext :

Optimize-DbContext

Belirtilen ad ile bağlam için modeli en iyi duruma getirmek için kullanılan örnek, farklı bir klasöre ve ad alanına sahiptir:

Optimize-DbContext -OutputDir Models -Namespace BlogModels -Context BlogContext

Remove-Migration

Son geçişi kaldırır (geçiş için yapılan kod değişikliklerini geri kaydeder).

Parametreler:

Parametre Açıklama
-Force Geçişi geri alma (veritabanına uygulanan değişiklikleri geri alın).

Ortak parametreler yukarıda listelenmiştir.

Scaffold-DbContext

Bir DbContext veritabanı için ve varlık türleri için kod üretir. Scaffold-DbContextBir varlık türü oluşturmak için veritabanı tablosunun bir birincil anahtarı olmalıdır.

Parametreler:

Parametre Açıklama
-Connection <String> Veritabanına bağlantı dizesi. ASP.NET Core 2. x projeleri için, değer name = bağlantı dizesinin > adıolabilir. Bu durumda, ad proje için ayarlanan yapılandırma kaynaklarından gelir. Bu bir Konumsal parametredir ve gereklidir.
-Provider <String> Kullanılacak sağlayıcı. genellikle bu NuGet paketinin adıdır, örneğin: Microsoft.EntityFrameworkCore.SqlServer . Bu bir Konumsal parametredir ve gereklidir.
-OutputDir <String> İçinde varlık sınıfı dosyalarını yerleştirmek için dizin. Yollar proje dizinine göredir.
-ContextDir <String> DbContextDosyanın içine yerleştirilecek dizin. Yollar proje dizinine göredir.
-Namespace <String> 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.
-ContextNamespace <String> 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.
-Context <String> DbContextOluşturulacak sınıfın adı.
-Schemas <String[]> İçin varlık türleri oluşturulacak tablo şemaları. Bu parametre atlanırsa, tüm şemalar dahil edilir.
-Tables <String[]> İçin varlık türleri oluşturulacak tablolar. Bu parametre atlanırsa, tüm tablolar dahil edilir.
-DataAnnotations Modeli yapılandırmak için öznitelikleri kullanın (mümkün olduğunda). Bu parametre atlanırsa yalnızca Fluent API kullanılır.
-UseDatabaseNames Tablo ve sütun adlarını tam olarak veritabanında göründükleri gibi kullanın. Bu parametre atlanırsa, veritabanı adları C# ad stili kurallarına daha yakından uyacak şekilde değiştirilir.
-Force Varolan dosyaların üzerine yaz.
-NoOnConfiguring Oluşturma DbContext.OnConfiguring . EF Core 5,0 ' ye eklenmiştir.
-NoPluralize Pluralizer kullanmayın. EF Core 5,0 ' ye eklenmiştir.

Ortak parametreler yukarıda listelenmiştir.

Örnek:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Yalnızca seçili tabloları oluşturan ve bağlamı belirtilen bir ad ve ad alanı olan ayrı bir klasörde oluşturan örnek:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables "Blog","Post" -ContextDir Context -Context BlogContext -ContextNamespace New.Namespace

Aşağıdaki örnek, büyük olasılıkla gizli dizi Yöneticisi aracıkullanılarak ayarlanan proje yapılandırmasından bağlantı dizesini okur.

Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer

Script-DbContext

dbcontext 'ten bir SQL betiği oluşturur. Tüm geçişleri atlar.

Parametreler:

Parametre Açıklama
-Output <String> Sonucun yazılacağı dosya.

Ortak parametreler yukarıda listelenmiştir.

Script-Migration

seçilen bir geçişin tüm değişikliklerini seçili başka bir geçişe uygulayan bir SQL betiği oluşturur.

Parametreler:

Parametre Açıklama
-From <String> Geçiş başlatılıyor. Geçişler, ada veya KIMLIĞE göre tanımlanabilir. 0 sayısı, ilk geçişten öncekianlamına gelen özel bir durumdur. Varsayılan değer 0 ' dır.
-To <String> Son geçiş. Son geçişin varsayılan değeri.
-Idempotent Herhangi bir geçişte veritabanında kullanılabilecek bir betik oluşturun.
-NoTransactions SQL transactıon deyimleri oluşturmamayın. EF Core 5,0 ' ye eklenmiştir.
-Output <String> Sonucun yazılacağı dosya. Bu parametre atlanırsa, dosya uygulamanın çalışma zamanı dosyalarıyla aynı klasörde oluşturulmuş bir adla oluşturulur, örneğin: /obj/Debug/netcoreapp2.1/ghbkztfz.sql/.

Ortak parametreler yukarıda listelenmiştir.

İpucu

To, From ve parametreleri sekme Output genişletmeyi destekler.

Aşağıdaki örnek, geçiş adını kullanarak InitialCreate geçişi için bir betik oluşturur (herhangi bir geçiş olmadan bir veritabanından).

Script-Migration 0 InitialCreate

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

Script-Migration 20180904195021_InitialCreate

Update-Database

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

Parametre Açıklama
-Migration <String> Hedef geç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.
-Connection <String> Veritabanına bağlantı dizesi. varsayılan olarak veya içinde belirtilen AddDbContextOnConfiguring değerdir. 5.0 EF Core eklendi.

Ortak parametreler yukarıda listelenmiştir.

İpucu

parametresi Migration sekme genişletmeyi destekler.

Aşağıdaki örnek tüm geçişleri geri döndürer.

Update-Database 0

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:

Update-Database InitialCreate
Update-Database 20180904195021_InitialCreate -Connection your_connection_string

Ek kaynaklar