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.
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 --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, geçerli dizindeki proje başlangıç projesidir. seçeneğini kullanarak --startup-project 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.
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
İpucu
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
Açıklama
--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
Açıklama
--force
-f
Bunu onaylama.
--dry-run
Hangi veritabanının bırakacağını gösterin, ancak bırakmayın.
Veritabanını son geçişe veya belirtilen geçişe güncelleştirir.
Bağımsız Değişkenler:
Bağımsız değişken
Açıklama
<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
Açıklama
--connection <CONNECTION>
Veritabanına bağlantı dizesi. varsayılan olarak veya OnConfiguringiçinde belirtilen değeri AddDbContext kullanır.
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
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
Açıklama
<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
Açıklama
--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.
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.
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
Açıklama
--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.
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Bu modül, veri erişim projesi oluşturma adımları boyunca size yol gösterir. Entity Framework Core (EF Core) kullanarak ilişkisel bir veritabanına bağlanır ve oluşturma, okuma, güncelleştirme ve silme (CRUD) sorguları oluşturursunuz.