Entity Framework Core araçları başvurusu - .NET Core CLI
Entity Framework Core için komut satırı arabirimi (CLI) 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, .NET Core SDK'sının bir parçası olan platformlar arası dotnet komutunun uzantısıdır. Bu araçlar .NET Core projeleriyle çalışır.
Visual Studio kullanırken CLI araçları yerine Paket Yöneticisi Konsolu araçlarını kullanmayı göz önünde bulundurun. Konsol araçlarını otomatik olarak Paket Yöneticisi:
- dizinleri el ile değiştirmenizi gerektirmeden Paket Yöneticisi Konsolu'nda seçilen geçerli projeyle çalışır.
- Komut tamamlandıktan sonra komut tarafından oluşturulan dosyaları açar.
- Komutların, parametrelerin, proje adlarının, bağlam türlerinin ve geçiş adlarının sekmeyle tamamlanmasını sağlar.
Araçları yükleme
dotnet ef
genel veya yerel bir araç olarak yüklenebilir. Geliştiricilerin çoğu aşağıdaki komutu kullanarak genel bir araç olarak yüklemeyi dotnet ef
tercih eder:
dotnet tool install --global dotnet-ef
Bunu yerel bir araç olarak kullanmak için, bir araç bildirim dosyası kullanarak bunu araç bağımlılığı olarak bildiren bir projenin bağımlılıklarını geri yükleyin.
Aşağıdaki komutu kullanarak aracı güncelleştirin:
dotnet tool update --global dotnet-ef
Belirli bir projedeki araçları kullanabilmeniz için paketi buna eklemeniz Microsoft.EntityFrameworkCore.Design
gerekir.
dotnet add package Microsoft.EntityFrameworkCore.Design
Yüklemeyi doğrulama
EF Core CLI araçlarının doğru yüklendiğini doğrulamak için aşağıdaki komutları çalıştırın:
dotnet ef
Komutun çıkışı, kullanımda olan araçların sürümünü tanımlar:
_/\__
---==/ \\
___ ___ |. \|\
| __|| __| | ) \\\
| _| | _| \_/ | //|\\
|___||_| / \\\/\\
Entity Framework Core .NET Command-line Tools 2.1.3-rtm-32065
<Usage documentation follows, not shown.>
Araçları güncelleştirme
Genel araçları kullanılabilir en son sürüme güncelleştirmek için kullanın dotnet tool update --global dotnet-ef
. Projenizde yerel olarak yüklü araçlar varsa kullanın dotnet tool update dotnet-ef
. Komutunun sonuna ekleyerek --version <VERSION>
belirli bir sürümü yükleyin. Diğer ayrıntılar için dotnet aracı belgelerinin Güncelleştirme bölümüne bakın.
Araçları kullanma
Araçları kullanmadan önce bir başlangıç projesi oluşturmanız veya ortamı ayarlamanız gerekebilir.
Hedef proje 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, geçerli dizindeki proje hedef projedir. seçeneğini 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, geçerli dizindeki proje başlangıç projesidir. seçeneğini kullanarak
başlangıç projesi olarak farklı bir proje belirtebilirsiniz.--startup-project
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
CLI araçları .NET Core projeleri ve .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. Bu gibi durumlarda, tek amacı araçlar için başlangıç projesi olarak hareket etmek olan bir .NET Core 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 ç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.
dotnet ef database update -- --environment Production
Bahşiş
Belirteç, --
izleyen her şeyi bağımsız değişken olarak ele almaya yönlendirir dotnet ef
ve bunları seçenek olarak ayrıştırmaya çalışmaz. tarafından dotnet ef
kullanılmayan ek bağımsız değişkenler uygulamaya iletilir.
Ortak seçenekler
Seçenek | Kısa | Tanım |
---|---|---|
--json |
JSON çıkışını göster. | |
--context <DBCONTEXT> |
-c |
DbContext Kullanılacak sınıf. Yalnızca sınıf adı veya ad alanlarıyla tam olarak nitelenmiş. Bu seçenek atlanırsa EF Core bağlam sınıfını bulur. Birden çok bağlam sınıfı varsa, bu seçenek gereklidir. |
--project <PROJECT> |
-p |
Hedef projenin proje klasörünün göreli yolu. Varsayılan değer geçerli klasördür. |
--startup-project <PROJECT> |
-s |
Başlangıç projesinin proje klasörünün göreli yolu. Varsayılan değer geçerli klasördür. |
--framework <FRAMEWORK> |
Hedef çerçeve için Hedef Çerçeve Takma Adı. Proje dosyası birden çok hedef çerçeve belirttiğinde ve bunlardan birini seçmek istediğinizde kullanın. | |
--configuration <CONFIGURATION> |
Derleme yapılandırması, örneğin: Debug veya Release . |
|
--runtime <IDENTIFIER> |
Paketlerinin geri yükleneceği hedef çalışma zamanının tanımlayıcısı. Çalışma Zamanı Tanımlayıcılarının (RID) listesi için RID kataloğuna bakın. | |
--no-build |
Projeyi oluşturmayın. Derleme güncel olduğunda kullanılmak üzere tasarlanmıştır. | |
--help |
-h |
Yardım bilgilerini gösterin. |
--verbose |
-v |
Ayrıntılı çıkışı göster. |
--no-color |
Çıkışı renklendirmayın. | |
--prefix-output |
Düzeyli ön ek çıkışı. |
Tüm ek bağımsız değişkenler uygulamaya geçirilir.
dotnet ef database drop
Veritabanını siler.
Seçenekler:
Seçenek | Kısa | Tanım |
---|---|---|
--force |
-f |
Bunu onaylama. |
--dry-run |
Hangi veritabanının bırakacağını gösterin, ancak bırakmayın. |
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef database update
Veritabanını son geçişe veya belirtilen geçişe Güncelleştirmeler.
Bağımsız Değişkenler:
Bağımsız değişken | Tanım |
---|---|
<MIGRATION> |
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. |
Seçenekler:
Seçenek | Tanım |
---|---|
--connection <CONNECTION> |
Veritabanına bağlantı dizesi. varsayılan olarak veya OnConfiguring içinde belirtilen değeri AddDbContext kullanır. |
Yaygın seçenekler yukarıda listelenmiştir.
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:
dotnet ef database update InitialCreate
dotnet ef database update 20180904195021_InitialCreate --connection your_connection_string
dotnet ef dbcontext info
Bir DbContext
tür hakkında bilgi alır.
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef dbcontext list
Kullanılabilir DbContext
türleri listeler.
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef dbcontext optimize
tarafından DbContext
kullanılan modelin derlenmiş bir sürümünü oluşturur.
Daha fazla bilgi için bkz . Derlenmiş modeller .
Seçenekler:
Seçenek | Kısa | Tanım |
---|---|---|
--output-dir <PATH> |
-o |
Dosyaları yerleştirecek dizin. Yollar proje dizinine göredir. |
--namespace <NAMESPACE> |
-n |
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. |
Yaygın seçenekler yukarıda listelenmiştir.
Aşağıdaki örnek varsayılan ayarları kullanır ve projede yalnızca bir tane DbContext
varsa çalışır:
dotnet ef dbcontext optimize
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:
dotnet ef dbcontext optimize -o Models -n BlogModels -c BlogContext
dotnet ef dbcontext scaffold
Bir veritabanı için DbContext
ve varlık türleri için kod oluşturur. Bu komutun bir varlık türü oluşturması için veritabanı tablosunun birincil anahtarı olmalıdır.
Bağımsız Değişkenler:
Bağımsız değişken | Tanım |
---|---|
<CONNECTION> |
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. |
<PROVIDER> |
Kullanılacak sağlayıcı. Bu genellikle NuGet paketinin adıdır, örneğin: Microsoft.EntityFrameworkCore.SqlServer . |
Seçenekler:
Seçenek | Kısa | Tanım |
---|---|---|
--data-annotations |
-d |
Modeli yapılandırmak için öznitelikleri kullanın (mümkün olduğunda). Bu seçenek atlanırsa yalnızca akıcı API kullanılır. |
--context <NAME> |
-c |
Oluşturulacak sınıfın DbContext adı. |
--context-dir <PATH> |
Sınıf dosyasını yerleştirecek DbContext dizin. Yollar proje dizinine göredir. Ad alanları klasör adlarından türetilir. |
|
--context-namespace <NAMESPACE> |
Oluşturulan DbContext sınıf için kullanılacak ad alanı. Not: geçersiz kılar --namespace . |
|
--force |
-f |
Varolan dosyaların üzerine yaz. |
--output-dir <PATH> |
-o |
Varlık sınıfı dosyalarının yerleştirleneceği dizin. Yollar proje dizinine göredir. |
--namespace <NAMESPACE> |
-n |
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. |
--schema <SCHEMA_NAME>... |
Varlık türlerinin oluşturulacağı tablo ve görünümlerin şemaları. Birden çok şema belirtmek için her şema için aynı işlemi yineleyin --schema . Bu seçenek atlanırsa, tüm şemalar eklenir. Bu seçenek kullanılırsa, şemalardaki tüm tablolar ve görünümler açıkça --table kullanılarak dahil edilmese bile modele dahil edilir. |
|
--table <TABLE_NAME>... |
-t |
Varlık türlerinin oluşturulacağı tablolar ve görünümler. Birden çok tablo belirtmek için, her biri için veya --table yineleyin-t . Belirli bir şemadaki tablolar veya görünümler 'schema.table' veya 'schema.view' biçimi kullanılarak eklenebilir. Bu seçenek atlanırsa, tüm tablolar ve görünümler dahil edilir. |
--use-database-names |
Tablo, görünüm, sıra ve sütun adlarını veritabanında göründükleri şekilde kullanın. Bu seçenek atlanırsa, veritabanı adları C# ad stili kurallarına daha yakın olacak şekilde değiştirilir. | |
--no-onconfiguring |
Oluşturulan DbContext sınıfta yönteminin OnConfiguring oluşturulmasını bastırır. |
|
--no-pluralize |
Çoğullaştırıcıyı kullanma. |
Yaygın seçenekler yukarıda listelenmiştir.
Aşağıdaki örnek tüm şemaları ve tabloların iskelesini oluşturur ve yeni dosyaları Modeller klasörüne yerleştirir.
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
Aşağıdaki örnek yalnızca seçili tabloların iskelesini oluşturur ve bağlamı belirtilen ad ve ad alanına sahip ayrı bir klasörde oluşturur:
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -t Blog -t Post --context-dir Context -c BlogContext --context-namespace New.Namespace
Aşağıdaki örnek, Gizli Dizi Yöneticisi aracını kullanarak projenin yapılandırma kümesinden bağlantı dizesi okur.
dotnet user-secrets set ConnectionStrings:Blogging "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Blogging"
dotnet ef dbcontext scaffold Name=ConnectionStrings:Blogging Microsoft.EntityFrameworkCore.SqlServer
Aşağıdaki örnek, bir OnConfiguring
yöntemin iskelesini atlar. Bu, DbContext'i sınıfın dışında yapılandırmak istediğinizde yararlı olabilir. Örneğin, ASP.NET Core uygulamaları genellikle Startup.ConfigureServices içinde yapılandırılır.
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;User Id=myUsername;Password=myPassword;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring
dotnet ef dbcontext script
DbContext'ten bir SQL betiği oluşturur. Geçişleri atlar.
Seçenekler:
Seçenek | Kısa | Tanım |
---|---|---|
--output <FILE> |
-o |
Sonucu yazacak dosya. |
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef migrations add
Yeni bir geçiş ekler.
Bağımsız Değişkenler:
Bağımsız değişken | Tanım |
---|---|
<NAME> |
Geçişin adı. |
Seçenekler:
Seçenek | Kısa | Tanım |
---|---|---|
--output-dir <PATH> |
-o |
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 <NAMESPACE> |
-n |
Oluşturulan sınıflar için kullanılacak ad alanı. Varsayılan olarak çıkış dizininden oluşturulur. |
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef migrations bundle
Veritabanını güncelleştirmek için bir yürütülebilir dosya oluşturur.
Seçenekler:
Seçenek | Kısa | Tanım |
---|---|---|
--output <FILE> |
-o |
Oluşturulacak yürütülebilir dosyanın yolu. |
--force |
-f |
Varolan dosyaların üzerine yaz. |
--self-contained |
Ayrıca makineye yüklenmesi gerekmeyecek şekilde .NET çalışma zamanını paketleyin. | |
--target-runtime <RUNTIME_IDENTIFIER> |
-r |
Paketlenecek hedef çalışma zamanı. |
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef migrations has-pending-model-changes
Dekont
Bu komut EF Core 8.0'a eklendi.
Son geçişten sonra modelde herhangi bir değişiklik yapılıp yapılmadığını denetler.
Seçenekler:
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef migrations list
Kullanılabilir geçişleri listeler.
Seçenekler:
Seçenek | Tanım |
---|---|
--connection <CONNECTION> |
Veritabanına bağlantı dizesi. AddDbContext veya OnConfiguring içinde belirtilen varsayılan değerdir. |
--no-connect |
Veritabanına bağlanma. |
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef migrations remove
Son geçişi kaldırır ve en son geçiş için yapılan kod değişikliklerini geri alır.
Seçenekler:
Seçenek | Kısa | Tanım |
---|---|---|
--force |
-f |
En son geçiş için yapılan hem kod hem de veritabanı değişikliklerini geri döndürerek en son geçişi geri alın. Yalnızca veritabanına bağlanırken bir hata oluştuğunda kod değişiklikleri geri almaya devam eder. |
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef migrations script
Geçişlerden bir SQL betiği oluşturur.
Bağımsız Değişkenler:
Bağımsız değişken | Tanım |
---|---|
<FROM> |
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> |
Son geçiş. Varsayılan olarak son geçişi kullanır. |
Seçenekler:
Seçenek | Kısa | Tanım |
---|---|---|
--output <FILE> |
-o |
Betiği yazacak dosya. |
--idempotent |
-i |
Herhangi bir geçişte veritabanında kullanılabilecek bir betik oluşturun. |
--no-transactions |
SQL işlem deyimleri oluşturmayın. |
Yaygın seçenekler yukarıda listelenmiştir.
Aşağıdaki örnek InitialCreate geçişi için bir betik oluşturur:
dotnet ef migrations script 0 InitialCreate
Aşağıdaki örnek, InitialCreate geçişi sonrasında tüm geçişler için bir betik oluşturur.
dotnet ef migrations script 20180904195021_InitialCreate