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 komut satırı arabirimi (CLI) 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, .NET SDK'sının bir parçası olan platformlar arası dotnet komutunun uzantısıdır. Bu araçlar .NET projeleriyle çalışır.
Visual Studio kullanırken CLI araçları yerine Paket Yöneticisi Konsolu araçlarını kullanmayı göz önünde bulundurun. Paket Yöneticisi Konsol araçları otomatik olarak:
- 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 projede araçları kullanabilmeniz için önce projeye Microsoft.EntityFrameworkCore.Design paketini eklemeniz 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
Küresel araçları en son kullanılabilir sürüme güncellemek için dotnet tool update --global dotnet-ef kullanın. Projenizde yerel olarak yüklü araçlar varsa kullanın dotnet tool update dotnet-ef. Belirli bir sürümü yüklemek için --version <VERSION>'yi komutun sonuna ekleyin.
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.--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, 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 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
CLI araçları .NET projeleri ve .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 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). Bugün bu proje türleriyle derleme yapıyorsanız, destek almaya devam etmek için .NET SDK stili projelere yükseltmeniz önerilir. 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 ç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.
dotnet ef database update -- --environment Production
Tip
-- belirteci, dotnet ef'i izleyen her şeyi bağımsız değişken olarak ele almaya ve bunları seçenek olarak ayrıştırmamaya yönlendirir. tarafından dotnet ef kullanılmayan ek bağımsız değişkenler uygulamaya iletilir.
Ortak seçenekler
| Option | Short | Description |
|---|---|---|
--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 projeye ait 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 |
Çıkışa düzey belirteci ekle. |
Tüm ek bağımsız değişkenler uygulamaya geçirilir.
dotnet ef database drop
Veritabanını siler.
Options:
| Option | Short | Description |
|---|---|---|
--force |
-f |
Bunu onaylama. |
--dry-run |
Hangi veritabanının silineceğini göster, ancak silme. | |
--connection <CONNECTION> |
Veritabanına bağlantı dizesi.
AddDbContext veya OnConfiguring içinde belirtilen değere varsayılan olarak ayarlanır. EF Core 11'e eklendi. |
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ştirir.
Arguments:
| Argument | Description |
|---|---|
<MIGRATION> |
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. |
Options:
| Option | Description |
|---|---|
--connection <CONNECTION> |
Veritabanına bağlantı dizesi. Varsayılan olarak, AddDbContext veya OnConfiguring içinde belirtilen seçeneği 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
DbContext tarafından kullanılan modelin derlenmiş bir versiyonunu oluşturur ve sorguları önceden derler.
Daha fazla bilgi için bkz . Derlenmiş modeller .
Options:
| Option | Short | Description |
|---|---|---|
--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ı CompiledModelsolarak oluşturulur. |
--suffix <SUFFIX> |
Oluşturulan tüm dosyaların adına eklenecek sonek. Örneğin .g , bu dosyaların oluşturulan kod içerdiğini belirtmek için kullanılabilir |
|
--no-scaffold |
Derlenmiş model oluşturmayın. Bu, derlenmiş model zaten oluşturulduğunda kullanılır. | |
--precompile-queries |
Önceden derlenmiş sorgular oluşturun. Hedef proje herhangi bir sorgu içeriyorsa bu, NativeAOT derlemesi için gereklidir | |
--nativeaot |
NativeAOT derlemesi ve önceden derlenmiş sorgular için gereken derlenmiş modelde ek kod oluşturma |
Note
NativeAOT desteği ve önceden derlenmiş sorgular EF 9'da deneysel olarak kabul edilir ve sonraki sürümde önemli ölçüde değişebilir.
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 adına sahip bağlam için modeli optimize eder ve onu ayrı bir klasör ve isim uzayı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.
Arguments:
| Argument | Description |
|---|---|
<CONNECTION> |
Veritabanına bağlantı dizesi. ASP.NET Core 2.x projeleri için, değer name=<bağlantı dizesinin adı> 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. |
Options:
| Option | Short | Description |
|---|---|---|
--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> |
Yerleştirmek üzere sınıf dosyasının konulacağı DbContext dizini. 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 -t veya --table öğesini yineleyin. 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ıfında OnConfiguring yönteminin oluşturulmasını bastırır. |
|
--no-pluralize |
Çoğullaştırıcıyı kullanmayın. |
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;Integrated Security=true;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring
dotnet ef dbcontext script
DbContext'ten bir SQL betiği oluşturur. Geçiş işlemlerini atlar.
Options:
| Option | Short | Description |
|---|---|---|
--output <FILE> |
-o |
Sonucu yazacak dosya. |
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef migrations add
Yeni bir geçiş ekler.
Arguments:
| Argument | Description |
|---|---|
<NAME> |
Geçişin adı. |
Options:
| Option | Short | Description |
|---|---|---|
--output-dir <PATH> |
-o |
Dosyaların çıktısı için kullanılan dizin. Yollar hedef proje dizinine göredir. Varsayılan olarak "Migrations" 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.
Options:
| Option | Short | Description |
|---|---|---|
--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
Note
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.
Options:
Yaygın seçenekler yukarıda listelenmiştir.
dotnet ef migrations list
Kullanılabilir geçişleri listeler.
Options:
| Option | Description |
|---|---|
--connection <CONNECTION> |
Veritabanına bağlantı dizesi. AddDbContext veya OnConfiguring içinde belirtilen varsayılan değerdir. |
--no-connect |
Veritabanına bağlanmayın. |
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.
Options:
| Option | Short | Description |
|---|---|---|
--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. Veritabanına bağlanırken bir hata oluşursa yalnızca kod değişikliklerini geri alır. |
--connection <CONNECTION> |
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. |
Yaygın seçenekler yukarıda listelenmiştir.
Note
--offline ve --force seçenekleri, --force'nin geri döndürülmeden önce geçişin uygulanıp uygulanmadığını denetlemek için bir veritabanı bağlantısı gerektirdiğinden birlikte kullanılamaz.
dotnet ef migrations script
Geçişlerden bir SQL betiği oluşturur.
Arguments:
| Argument | Description |
|---|---|
<FROM> |
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> |
Son geçiş. Varsayılan olarak son geçişi kullanır. |
Options:
| Option | Short | Description |
|---|---|---|
--output <FILE> |
-o |
Yazılacak betik için dosya. |
--idempotent |
-i |
Her türlü 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