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
.-ProjectBaş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