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, veritabanı geçişleri oluşturur, bu geçişleri uygular ve mevcut bir veritabanını temel alan bir model için kod üretir. 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.-ProjectAraçların inşa ettiği ve çalıştırdığı başlangıç projesidir. 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 doğrudan bir .NET uygulaması değildir; .NET uygulamalarının desteklemesi gereken bir API kümesinin 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 varsa ek bağımsız değişkenler, Program.CreateHostBuilder'a iletilir.
Update-Database -Args '--environment Production'
Genel parametreler
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> |
Dosyaların çıktısı için kullanılan dizin. Yollar hedef proje dizinine göredir. Varsayılan olarak "Migrations" 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 ilkine ayarlanır. |
Ortak parametreler yukarıda listelenmiştir.
Drop-Database
Veritabanını siler.
Parameters:
| Parameter | Description |
|---|---|
-WhatIf |
Hangi veritabanının silineceğini göster, ancak silme. |
-Connection <String> |
Veritabanına bağlantı dizesi. Varsayılan olarak, AddDbContext veya OnConfiguring içinde belirtilen seçeneği kullanır. EF Core 11'e eklendi. |
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ğlanmayın. |
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 adına sahip bağlam için modeli optimize eder ve onu ayrı bir klasör ve isim uzayı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). |
-Connection <String> |
Veritabanına bağlantı dizesi. Varsayılan olarak, AddDbContext veya OnConfiguring içinde belirtilen seçeneği kullanır. EF Core 11'e eklendi. |
-Offline |
Veritabanına bağlanmadan geçişi kaldırın. EF Core 11'e eklendi. |
Ortak parametreler yukarıda listelenmiştir.
Note
Bir veritabanı bağlantısı, geçişin uygulanıp uygulanmadığını kontrol etmek için gerektiğinden ve geri döndürme işlemi yapılmadan önce -Force parametresi kullanılamayacağından, -Offline ve -Force parametreleri birlikte kullanılamaz.
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ş işlemlerini 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 kimlik numarasıyla 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 |
Her türlü 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, herhangi bir geçiş içermeyen bir veritabanından InitialCreate geçişi için, geçiş adını kullanarak 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 kimlik numarasıyla 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, AddDbContext veya OnConfiguring içinde belirtilen seçeneği 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