Entity Framework Core araçları başvurusu - Visual Studio'da Paket Yöneticisi Konsolu
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 Core projeleriyle çalışır.
Visual Studio kullanmıyorsanız, bunun yerine EF Core Komut Satırı Araçları'nı öneririz. .NET Core CLI araçları platformlar arasıdır ve bir komut istemi içinde çalıştırılır.
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.-Project
Baş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 Core sınıf kitaplığındadır.
- .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ştirmek de mümkündür.
Diğer hedef çerçeveler
Paket Yöneticisi Konsolu araçları .NET Core veya .NET Framework projeleriyle çalışır. .NET Standart sınıf kitaplığında EF Core modeli olan uygulamaların .NET Core 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 Core 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.
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 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ı ç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'
Genel parametreler
Aşağıdaki tabloda, EF Core komutlarının tümü için ortak olan parametreler gösterilmektedir:
Parametre | Tanım |
---|---|
-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.
Bahşiş
Context
, Project
ve StartupProject
parametreleri sekme genişletmeyi destekler.
Geçiş Ekle
Yeni bir geçiş ekler.
Parametreler:
Parametre | Tanım |
---|---|
-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.
Paket Geçişi
Veritabanını güncelleştirmek için bir yürütülebilir dosya oluşturur.
Parametreler:
Parametre | Tanım |
---|---|
-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.
Parametreler:
Parametre | Tanım |
---|---|
-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.
Geçiş Alma
Kullanılabilir geçişleri listeler.
Parametreler:
Parametre | Tanım |
---|---|
-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 DbContext
kullanılan modelin derlenmiş bir sürümünü oluşturur.
Daha fazla bilgi için bkz . Derlenmiş modeller .
Parametreler:
Parametre | Tanım |
---|---|
-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ı CompiledModels olarak oluşturulur. |
Ortak parametreler yukarıda listelenmiştir.
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
Geçişi Kaldır
Son geçişi kaldırır (geçiş için yapılan kod değişikliklerini geri alır).
Parametreler:
Parametre | Tanım |
---|---|
-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.
Parametreler:
Parametre | Tanım |
---|---|
-Connection <String> |
Veritabanına bağlantı dizesi. ASP.NET Core 2.x projeleri için değer name=<name bağlantı dizesi> olabilir. Bu durumda ad, proje için ayarlanan yapılandırma kaynaklarından gelir. Bu konumsal bir parametredir ve gereklidir. |
-Provider <String> |
Kullanılacak sağlayıcı. Bu genellikle NuGet paketinin adıdır, örneğin: Microsoft.EntityFrameworkCore.SqlServer . Bu konumsal bir parametredir ve gereklidir. |
-OutputDir <String> |
Varlık sınıfı dosyalarının yerleştirleneceği dizin. Yollar proje dizinine göredir. |
-ContextDir <String> |
Dosyayı yerleştirecek DbContext 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 oluşturulur. |
-ContextNamespace <String> |
Oluşturulan DbContext sınıf için kullanılacak ad alanı. Not: geçersiz kılar -Namespace . |
-Context <String> |
Oluşturulacak sınıfın DbContext adı. |
-Schemas <String[]> |
Varlık türlerinin oluşturulacağı tablo ve görünümlerin şemaları. Bu parametre atlanırsa, tüm şemalar eklenir. Bu seçenek kullanılırsa, -Table kullanılarak açıkça dahil edilmeseler bile şemalardaki tüm tablolar ve görünümler modele dahil edilir. |
-Tables <String[]> |
Varlık türlerinin oluşturulacağı tablolar ve görünümler. Belirli bir şemadaki tablolar veya görünümler 'schema.table' veya 'schema.view' biçimi kullanılarak eklenebilir. Bu parametre atlanırsa, tüm tablolar ve görünümler eklenir. |
-DataAnnotations |
Modeli yapılandırmak için öznitelikleri kullanın (mümkün olduğunda). Bu parametre atlanırsa yalnızca akıcı API kullanılır. |
-UseDatabaseNames |
Tablo, görünüm, sıra ve sütun adlarını veritabanında göründükleri şekilde kullanın. Bu parametre atlanırsa, veritabanı adları C# ad stili kurallarına daha yakın olacak şekilde değiştirilir. |
-Force |
Varolan dosyaların üzerine yaz. |
-NoOnConfiguring |
oluşturmayın DbContext.OnConfiguring . |
-NoPluralize |
Çoğullaştırıcıyı kullanma. |
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ı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 örnek, gizli dizi yöneticisi aracını kullanarak projenin yapılandırmasındaki bağlantı dizesi okur.
Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer
Script-DbContext
DbContext'ten bir SQL betiği oluşturur. Geçişleri atlar.
Parametreler:
Parametre | Tanım |
---|---|
-Output <String> |
Sonucu yazacak dosya. |
Ortak parametreler yukarıda listelenmiştir.
Betik Geçişi
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.
Parametreler:
Parametre | Tanım |
---|---|
-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.
Bahşiş
To
, From
ve 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
Veritabanını Güncelleştir
Veritabanını son geçişe veya belirtilen geçişe Güncelleştirmeler.
Parametre | Tanım |
---|---|
-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 OnConfiguring içinde belirtilen değeri AddDbContext kullanır. |
Ortak parametreler yukarıda listelenmiştir.
Bahşiş
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