Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Entity Framework Core için Paket Yöneticisi Konsolu (PMC) araçları tasarım zamanı geliştirme görevlerini gerçekleştirir. Örneğin, geçişler oluşturur, geçişleri uygular ve var olan bir veritabanını temel alan bir model için kod oluşturur. Komutlar, Paket Yöneticisi Konsolunu kullanarak Visual Studio'nun içinde çalışır. Bu araçlar hem .NET Framework hem de .NET projeleriyle çalışır.
Visual Studio kullanmıyorsanız, bunun yerine EF Core Komut Satırı Araçları'nı öneririz. .NET CLI araçları platformlar arasıdır ve bir komut istemi içinde çalıştırılır.
Warning
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Araçları yükleme
Paket Yöneticisi Konsolu'nda aşağıdaki komutu çalıştırarak Paket Yöneticisi Konsolu araçlarını yükleyin:
Install-Package Microsoft.EntityFrameworkCore.Tools
Paket Yöneticisi Konsolu'nda aş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
Çıkış şöyle görünür (hangi araçların sürümünü kullandığınızı göstermez):
_/\__
---==/ \\
___ ___ |. \|\
| __|| __| | ) \\\
| _| | _| \_/ | //|\\
|___||_| / \\\/\\
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ı kullanmayı öğrenin.
- ASP.NET Core projeleri için ortamı ayarlayın.
Hedef ve başlangıç projesi
Komutlar bir projeye ve başlangıç projesine başvurur.
Proje, komutların dosyaları eklediği veya kaldırdığı yer olduğundan hedef proje olarak da bilinir. Varsayılan olarak, Paket Yöneticisi Konsolu'nda seçilen Varsayılan proje hedef projedir. parametresini kullanarak
hedef proje olarak farklı bir proje belirtebilirsiniz.-ProjectBaşlangıç projesi, araçların derleyip çalıştırdığını projedir . Veritabanı bağlantı dizesi ve modelin yapılandırması gibi proje hakkında bilgi almak için araçların tasarım zamanında uygulama kodunu yürütmesi gerekir. Varsayılan olarak, Çözüm Gezgini'daki Başlangıç Projesi başlangıç projesidir. parametresini kullanarak
başlangıç projesi olarak farklı bir proje belirtebilirsiniz.-StartupProject
Başlangıç projesi ve hedef proje genellikle aynı projedir. Bunların ayrı projeler olduğu tipik bir senaryo şunlardır:
- EF Core bağlamı ve varlık sınıfları bir .NET sınıf kitaplığındadır.
- Bir .NET 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ştirmek de mümkündür.
Diğer hedef çerçeveler
Paket Yöneticisi Konsolu araçları .NET veya .NET Framework projeleriyle çalışır. .NET Standart sınıf kitaplığında EF Core modeline sahip uygulamaların .NET veya .NET Framework projesi olmayabilir. Örneğin bu, Xamarin ve Evrensel Windows Platformu uygulamaları için geçerlidir. Böyle durumlarda, tek amacı araçlar için başlangıç projesi olarak hareket etmek olan bir .NET veya .NET Framework konsol uygulaması projesi oluşturabilirsiniz. Proje, gerçek kodu olmayan sahte bir proje olabilir; yalnızca araçlar için bir hedef sağlamak için gereklidir.
Important
Xamarin.Android, Xamarin.iOS, Xamarin.Mac artık android için .NET, iOS için .NET ve macOS için .NET olarak doğrudan .NET ile tümleştirilmiş (.NET 6'dan başlayarak). Eğer bugün bu tür projelerle çalışıyorsanız, destek almaya devam etmek için .NET SDK tarzı projelere yükseltmelisiniz. Xamarin projelerini .NET'e yükseltme hakkında daha fazla bilgi için Xamarin'den .NET'e yükseltme & .NET MAUI belgelerine bakın.
Neden sahte bir proje gereklidir? Daha önce belirtildiği gibi, araçların tasarım zamanında uygulama kodunu yürütmesi gerekir. Bunu yapmak için .NET veya .NET Framework çalışma zamanını kullanmaları gerekir. EF Core modeli .NET veya .NET Framework hedefleyen bir projede olduğunda, EF Core araçları çalışma zamanını projeden ödünç alır. EF Core modeli bir .NET Standart sınıf kitaplığındaysa bunu yapamazlar. .NET Standard gerçek bir .NET uygulaması değildir; .NET uygulamalarının desteklemesi gereken bir DIZI API'nin belirtimidir. Bu nedenle EF Core araçlarının uygulama kodunu yürütmesi için .NET Standard yeterli değildir. Başlangıç projesi olarak kullanmak üzere oluşturduğunuz sahte proje, araçların .NET Standart sınıf kitaplığını yükleyebileceği somut bir hedef platform sağlar.
ASP.NET Core ortamı
ASP.NET Core projeleri için ortamı komut satırında belirtebilirsiniz. Bu ve tüm ek bağımsız değişkenler Program.CreateHostBuilder'a geçirilir.
Update-Database -Args '--environment Production'
Common parameters
Aşağıdaki tabloda, EF Core komutlarının tümü için ortak olan parametreler gösterilmektedir:
| Parameter | Description |
|---|---|
-Context <String> |
DbContext Kullanılacak sınıf. Yalnızca sınıf adı veya ad alanlarıyla tam olarak nitelenmiş. 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, hedef proje olarak Paket Yöneticisi Konsolu için Varsayılan proje kullanılır. |
-StartupProject <String> |
Başlangıç projesi. Bu parametre atlanırsa, Hedef proje olarak Çözüm özelliklerindeki Başlangıç projesi kullanılır. |
-Args <String> |
Uygulamaya geçirilen bağımsız değişkenler. |
-Verbose |
Ayrıntılı çıkışı göster. |
Komutla ilgili yardım bilgilerini göstermek için PowerShell'in Get-Help komutunu kullanın.
Tip
Context, Projectve StartupProject parametreleri sekme genişletmeyi destekler.
Add-Migration
Yeni bir geçiş ekler.
Parameters:
| Parameter | Description |
|---|---|
-Name <String> |
Geçişin adı. Bu konumsal bir parametredir ve gereklidir. |
-OutputDir <String> |
Dizin, dosyaların çıktısını almak için kullanır. Yollar hedef proje dizinine göredir. Varsayılan olarak "Geçişler" kullanılır. |
-Namespace <String> |
Oluşturulan sınıflar için kullanılacak ad alanı. Varsayılan olarak çıkış dizininden oluşturulur. |
Ortak parametreler yukarıda listelenmiştir.
Bundle-Migration
Veritabanını güncelleştirmek için bir yürütülebilir dosya oluşturur.
Parameters:
| Parameter | Description |
|---|---|
-Output <String> |
Oluşturulacak yürütülebilir dosyanın yolu. |
-Force |
Varolan dosyaların üzerine yaz. |
-SelfContained |
Ayrıca makineye yüklenmesi gerekmeyecek şekilde .NET çalışma zamanını paketleyin. |
-TargetRuntime <String> |
Paketlenecek hedef çalışma zamanı. |
-Framework <String> |
Hedef çerçeve. Varsayılan olarak projedeki ilk değerdir. |
Ortak parametreler yukarıda listelenmiştir.
Drop-Database
Veritabanını bırakır.
Parameters:
| Parameter | Description |
|---|---|
-WhatIf |
Hangi veritabanının bırakacağını gösterin, ancak bırakmayın. |
Ortak parametreler yukarıda listelenmiştir.
Get-DbContext
Kullanılabilir DbContext türler hakkında bilgi alır ve listeler.
Ortak parametreler yukarıda listelenmiştir.
Get-Migration
Kullanılabilir geçişleri listeler.
Parameters:
| Parameter | Description |
|---|---|
-Connection <String> |
Veritabanına bağlantı dizesi. AddDbContext veya OnConfiguring içinde belirtilen varsayılan değerdir. |
-NoConnect |
Veritabanına bağlanma. |
Ortak parametreler yukarıda listelenmiştir.
Optimize-DbContext
tarafından DbContextkullanılan modelin derlenmiş bir sürümünü oluşturur.
Daha fazla bilgi için bkz . Derlenmiş modeller .
Parameters:
| Parameter | Description |
|---|---|
-OutputDir <String> |
Dosyaları yerleştirecek dizin. Yollar proje dizinine göredir. |
-Namespace <String> |
Oluşturulan tüm sınıflar için kullanılacak ad alanı. Varsayılan olarak kök ad alanından ve çıkış dizininden artı CompiledModelsolarak oluşturulur. |
Ortak parametreler yukarıda listelenmiştir.
Note
PMC araçları şu anda NativeAOT derlemesi ve önceden derlenmiş sorgular için gerekli kodun oluşturulmasını desteklememektedir.
Aşağıdaki örnek, varsayılan değerleri kullanır ve projede yalnızca bir tane DbContext varsa çalışır:
Optimize-DbContext
Aşağıdaki örnek, belirtilen ada sahip bağlam için modeli iyileştirir ve ayrı bir klasöre ve ad alanına yerleştirir:
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 alır).
Parameters:
| Parameter | Description |
|---|---|
-Force |
Geçişi geri alın (veritabanına uygulanan değişiklikleri geri alın). |
Ortak parametreler yukarıda listelenmiştir.
Scaffold-DbContext
Bir veritabanı için DbContext ve varlık türleri için kod oluşturur. Varlık türü oluşturmak için Scaffold-DbContext veritabanı tablosunun birincil anahtarı olmalıdır.
Parameters:
Ortak parametreler yukarıda listelenmiştir.
Example:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Yalnızca seçili tabloların iskelesini oluşturan ve bağlamı belirtilen ad ve ad alanına sahip 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 örnekte Yapılandırma kullanılarak bağlantı dizesi okunur.
Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer
Script-DbContext
DbContext'ten bir SQL betiği oluşturur. Geçişleri atlar.
Parameters:
| Parameter | Description |
|---|---|
-Output <String> |
Sonucu yazacak dosya. |
Ortak parametreler yukarıda listelenmiştir.
Script-Migration
Seçili bir geçişten başka bir seçili geçişe yapılan tüm değişiklikleri uygulayan bir SQL betiği oluşturur.
Parameters:
| Parameter | Description |
|---|---|
-From <String> |
Geçiş başlatılıyor. Geçişler ada veya kimlikle tanımlanabilir. 0 sayısı, ilk geçiş öncesinde anlamına gelen özel bir durumdur. Varsayılan değer 0'dır. |
-To <String> |
Son geçiş. Varsayılan olarak son geçişi kullanır. |
-Idempotent |
Herhangi bir geçişte veritabanında kullanılabilecek bir betik oluşturun. |
-NoTransactions |
SQL işlem deyimleri oluşturmayın. |
-Output <String> |
Sonucu yazacak dosya. Bu parametre atlanırsa, dosya uygulamanın çalışma zamanı dosyalarıyla aynı klasörde oluşturulan bir adla oluşturulur, örneğin: /obj/Debug/netcoreapp2.1/ghbkztfz.sql/. |
Ortak parametreler yukarıda listelenmiştir.
Tip
To, Fromve Output parametreleri sekme genişletmeyi destekler.
Aşağıdaki örnek, geçiş adını kullanarak InitialCreate geçişi (herhangi bir geçiş içermeyen bir veritabanından) için bir betik oluşturur.
Script-Migration 0 InitialCreate
Aşağıdaki örnek, InitialCreate geçişi sonrasında geçiş kimliğini kullanarak 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 geçişe güncelleştirir.
| Parameter | Description |
|---|---|
-Migration <String> |
Hedef geçiş. Geçişler ada veya kimlikle tanımlanabilir. 0 sayısı, ilk geçişten önce anlamına gelen ve tüm geçişlerin geri alınmasına neden olan özel bir durumdur. Herhangi bir geçiş belirtilmezse, komut varsayılan olarak son geçişe ayarlanır. |
-Connection <String> |
Veritabanına bağlantı dizesi. varsayılan olarak veya AddDbContextiçinde belirtilen değeri OnConfiguring kullanır. |
Ortak parametreler yukarıda listelenmiştir.
Tip
Migration parametresi sekme genişletmeyi destekler.
Aşağıdaki örnek tüm geçişleri geri alır.
Update-Database 0
Aşağıdaki örnekler veritabanını belirtilen bir geçişe güncelleştirir. 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