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 -Project hedef proje olarak farklı bir proje belirtebilirsiniz.

  • 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 -StartupProject başlangıç projesi olarak farklı bir proje belirtebilirsiniz.

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, Projectve 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 DbContextkullanı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ı CompiledModelsolarak 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, 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

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 OnConfiguringiç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

Ek kaynaklar