Entity Framework Core araçları başvurusu-.NET Core CLIEntity Framework Core tools reference - .NET Core CLI

Entity Framework Core için komut satırı arabirimi (CLı) araçları tasarım zamanı geliştirme görevlerini gerçekleştirmeye yöneliktir.The command-line interface (CLI) tools for Entity Framework Core perform design-time development tasks. Örneğin, geçişleroluşturur, geçişleri uygular ve var olan bir veritabanını temel alan bir model için kod oluşturur.For example, they create migrations, apply migrations, and generate code for a model based on an existing database. Komutlar, .NET Core SDKbir parçası olan platformlar arası DotNet komutuna bir uzantıdır.The commands are an extension to the cross-platform dotnet command, which is part of the .NET Core SDK. Bu araçlar .NET Core projeleriyle birlikte çalışır.These tools work with .NET Core projects.

Visual Studio kullanırken, CLı araçları yerine Paket Yöneticisi konsol araçlarını kullanmayı düşünün.When using Visual Studio, consider using the Package Manager Console tools in lieu of the CLI tools. Paket Yöneticisi konsol araçları otomatik olarak:Package Manager Console tools automatically:

  • , Dizin el ile geçiş yapmanız gerekmeden, Paket Yöneticisi konsolunda seçili olan geçerli projeyle birlikte çalışarak.Works with the current project selected in the Package Manager Console without requiring that you manually switch directories.
  • Komut tamamlandıktan sonra komut tarafından oluşturulan dosyaları açar.Opens files generated by a command after the command is completed.
  • Komutların, parametrelerin, proje adlarının, bağlam türlerinin ve geçiş adlarının sekme ile tamamlanmasını sağlar.Provides tab completion of commands, parameters, project names, context types, and migration names.

Araçları yüklemeInstalling the tools

dotnet ef , genel veya yerel bir araç olarak yüklenebilir.dotnet ef can be installed as either a global or local tool. Çoğu geliştirici dotnet ef , aşağıdaki komutu kullanarak yüklemeyi küresel bir araç olarak tercih eder:Most developers prefer installing dotnet ef as a global tool using the following command:

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.To use it as a local tool, restore the dependencies of a project that declares it as a tooling dependency using a tool manifest file.

Aşağıdaki komutu kullanarak araç aracını güncelleştirin:Update the tool tool using the following command:

dotnet tool update --global dotnet-ef

Araçları belirli bir projede kullanabilmeniz Microsoft.EntityFrameworkCore.Design için, paketi buna eklemeniz gerekir.Before you can use the tools on a specific project, you'll need to add the Microsoft.EntityFrameworkCore.Design package to it.

dotnet add package Microsoft.EntityFrameworkCore.Design

Yüklemeyi doğrulamaVerify installation

EF Core CLı araçlarının düzgün yüklendiğini doğrulamak için aşağıdaki komutları çalıştırın:Run the following commands to verify that EF Core CLI tools are correctly installed:

dotnet ef

Komutun çıktısı kullanımdaki araçların sürümünü tanımlar:The output from the command identifies the version of the tools in use:


                     _/\__
               ---==/    \\
         ___  ___   |.    \|\
        | __|| __|  |  )   \\\
        | _| | _|   \_/ |  //|\\
        |___||_|       /   \\\/\\

Entity Framework Core .NET Command-line Tools 2.1.3-rtm-32065

<Usage documentation follows, not shown.>

Araçları güncelleştirmeUpdate the tools

dotnet tool update --global dotnet-efGenel araçları kullanılabilir en son sürüme güncelleştirmek için kullanın.Use dotnet tool update --global dotnet-ef to update the global tools to the latest available version. Projenize yerel olarak yüklenmiş araçlar varsa dotnet tool update dotnet-ef .If you have the tools installed locally in your project use dotnet tool update dotnet-ef. Komutunuz içine ekleyerek belirli bir sürümü yükler --version <VERSION> .Install a specific version by appending --version <VERSION> to your command. Daha fazla bilgi için DotNet aracı belgelerinin güncelleştirme bölümüne bakın.See the Update section of the dotnet tool documentation for more details.

Araçları kullanmaUsing the tools

Araçları kullanmadan önce, bir başlangıç projesi oluşturmanız veya ortamı ayarlamanız gerekebilir.Before using the tools, you might have to create a startup project or set the environment.

Hedef proje ve başlangıç projesiTarget project and startup project

Komutlar bir projeye ve bir başlangıç projesine başvurur.The commands refer to a project and a startup project.

  • Ayrıca, komutların dosya eklemesi veya kaldırması nedeniyle Proje hedef proje olarak da bilinir.The project is also known as the target project because it's where the commands add or remove files. Varsayılan olarak, geçerli dizindeki proje hedef projem tir.By default, the project in the current directory is the target project. Seçeneğini kullanarak, hedef proje olarak farklı bir proje belirtebilirsiniz --project .You can specify a different project as target project by using the --project option.

  • Başlangıç projesi , araçların oluşturup çalıştırdığı bir.The startup project is the one that the tools build and run. Araçlar, veritabanı bağlantı dizesi ve modelin yapılandırması gibi proje hakkında bilgi almak için tasarım zamanında uygulama kodu yürütmeniz gerekir.The tools have to execute application code at design time to get information about the project, such as the database connection string and the configuration of the model. Varsayılan olarak, geçerli dizindeki proje başlangıç projem ' dir.By default, the project in the current directory is the startup project. Seçeneğini kullanarak, başlangıç projesi olarak farklı bir proje belirtebilirsiniz --startup-project .You can specify a different project as startup project by using the --startup-project option.

Başlangıç projesi ve hedef proje genellikle aynı projem.The startup project and target project are often the same project. Farklı projeler oldukları tipik bir senaryo şunlardır:A typical scenario where they are separate projects is when:

  • EF Core bağlamı ve varlık sınıfları bir .NET Core sınıf kitaplığında bulunur.The EF Core context and entity classes are in a .NET Core class library.
  • .NET Core konsol uygulaması veya Web uygulaması, sınıf kitaplığına başvurur.A .NET Core console app or web app references the class library.

Geçiş kodunu, EF Core bağlamından ayrı bir sınıf kitaplığına yerleştirmekde mümkündür.It's also possible to put migrations code in a class library separate from the EF Core context.

Diğer hedef çerçevelerOther target frameworks

CLı araçları .NET Core projeleriyle ve .NET Framework projeleriyle çalışır.The CLI tools work with .NET Core projects and .NET Framework projects. .NET Standard Sınıf kitaplığındaki EF Core modeli olan uygulamalarda .NET Core veya .NET Framework projesi bulunmayabilir.Apps that have the EF Core model in a .NET Standard class library might not have a .NET Core or .NET Framework project. Örneğin, bu, Xamarin ve Evrensel Windows Platformu uygulamaları için geçerlidir.For example, this is true of Xamarin and Universal Windows Platform apps. Bu gibi durumlarda, yalnızca amacı araçlar için başlangıç projesi olarak davranacak bir .NET Core konsol uygulaması projesi oluşturabilirsiniz.In such cases, you can create a .NET Core console app project whose only purpose is to act as startup project for the tools. Proje, gerçek kod içermeyen bir kukla proje olabilir — ve yalnızca araç için bir hedef sağlamanız gerekir.The project can be a dummy project with no real code — it is only needed to provide a target for the tooling.

İşlevsiz bir proje neden gereklidir?Why is a dummy project required? Daha önce belirtildiği gibi, araçların uygulama kodunu tasarım zamanında yürütmesi gerekir.As mentioned earlier, the tools have to execute application code at design time. Bunu yapmak için .NET Core çalışma zamanını kullanmaları gerekir.To do that, they need to use the .NET Core runtime. EF Core modeli .NET Core veya .NET Framework hedefleyen bir projede olduğunda, EF Core araçları projeden çalışma zamanını ödünç.When the EF Core model is in a project that targets .NET Core or .NET Framework, the EF Core tools borrow the runtime from the project. EF Core modeli .NET Standard bir sınıf kitaplığınlarsa bunu yapamazlar.They can't do that if the EF Core model is in a .NET Standard class library. .NET Standard gerçek bir .NET uygulamasını değil; .NET uygulamalarının desteklemesi gereken bir API kümesine yönelik bir belirtimdir.The .NET Standard is not an actual .NET implementation; it's a specification of a set of APIs that .NET implementations must support. Bu nedenle .NET Standard uygulama kodunu yürütmek için EF Core araçları yeterli değildir.Therefore .NET Standard is not sufficient for the EF Core tools to execute application code. Başlangıç projesi olarak kullanmak için oluşturduğunuz kukla proje, araçların .NET Standard sınıf kitaplığını yükleyebileceği somut bir hedef platform sağlar.The dummy project you create to use as startup project provides a concrete target platform into which the tools can load the .NET Standard class library.

ASP.NET Core ortamıASP.NET Core environment

ASP.NET Core projelerine yönelik ortamı belirtmek için, komutları çalıştırmadan önce ASPNETCORE_ENVIRONMENT ortam değişkenini ayarlayın.To specify the environment for ASP.NET Core projects, set the ASPNETCORE_ENVIRONMENT environment variable before running commands.

EF Core 5,0 ' den başlayarak, diğer bağımsız değişkenler de program. CreateHostBuilder öğesine geçirilebilir ve bu da ortamı komut satırında belirtmenize olanak sağlar:Starting in EF Core 5.0, additional arguments can also be passed into Program.CreateHostBuilder allowing you to specify the environment on the command-line:

dotnet ef database update -- --environment Production

İpucu

--Belirteç, dotnet ef bir bağımsız değişken olarak takip eden her şeyi kabul etmek ve bunları seçenekler olarak ayrıştırmaya çalışır.The -- token directs dotnet ef to treat everything that follows as an argument and not try to parse them as options. Tarafından kullanılmayan tüm ek bağımsız değişkenler dotnet ef uygulamaya iletilir.Any extra arguments not used by dotnet ef are forwarded to the app.

Ortak seçeneklerCommon options

SeçenekOption KısadırShort AçıklamaDescription
--json JSON çıkışını göster.Show JSON output.
--context <DBCONTEXT> -c DbContextKullanılacak sınıf.The DbContext class to use. Yalnızca sınıf adı veya ad alanları ile tam nitelikli.Class name only or fully qualified with namespaces. Bu seçenek atlanırsa, EF Core bağlam sınıfını bulur.If this option is omitted, EF Core will find the context class. Birden çok bağlam sınıfı varsa, bu seçenek gereklidir.If there are multiple context classes, this option is required.
--project <PROJECT> -p Hedef projenin proje klasörünün göreli yolu.Relative path to the project folder of the target project. Varsayılan değer geçerli klasördür.Default value is the current folder.
--startup-project <PROJECT> -s Başlangıç projesinin proje klasörünün göreli yolu.Relative path to the project folder of the startup project. Varsayılan değer geçerli klasördür.Default value is the current folder.
--framework <FRAMEWORK> Hedef çerçeveIçin hedef çerçeve bilinen adı.The Target Framework Moniker for the target framework. Proje dosyası birden çok hedef çerçeve belirttiğinde ve bunlardan birini seçmek istediğinizde kullanın.Use when the project file specifies multiple target frameworks, and you want to select one of them.
--configuration <CONFIGURATION> Derleme yapılandırması, örneğin: Debug veya Release .The build configuration, for example: Debug or Release.
--runtime <IDENTIFIER> Paketlerinin geri yükleneceği hedef çalışma zamanının tanımlayıcısı.The identifier of the target runtime to restore packages for. Çalışma zamanı tanımlayıcıları (RID 'Ler) listesi için bkz. RID kataloğu.For a list of Runtime Identifiers (RIDs), see the RID catalog.
--no-build Projeyi derleme.Don't build the project. Derleme güncel olduğunda kullanılmak üzere tasarlanmıştır.Intended to be used when the build is up-to-date.
--help -h Yardım bilgilerini göster.Show help information.
--verbose -v Ayrıntılı çıktıyı göster.Show verbose output.
--no-color Çıktıyı renklendirme.Don't colorize output.
--prefix-output Düzeydeki ön ek çıkışı.Prefix output with level.

EF Core 5,0 ' den başlayarak, tüm ek bağımsız değişkenler uygulamaya geçirilir.Starting in EF Core 5.0, any additional arguments are passed to the application.

dotnet ef database drop

Veritabanını siler.Deletes the database.

Seçenekler:Options:

SeçenekOption KısadırShort AçıklamaDescription
--force -f Onaylama.Don't confirm.
--dry-run Hangi veritabanının bırakılacağını gösterir, ancak onları düşürüyor.Show which database would be dropped, but don't drop it.

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

dotnet ef database update

Veritabanını son geçişe veya belirtilen bir geçişe güncelleştirir.Updates the database to the last migration or to a specified migration.

DeğişkenlerindenArguments:

Bağımsız DeğişkenArgument AçıklamaDescription
<MIGRATION> Hedef geçişi.The target migration. Geçişler, ada veya KIMLIĞE göre tanımlanabilir.Migrations may be identified by name or by ID. 0 sayısı, ilk geçişten önceki ve tüm geçişlerin geri alınmasına neden olan özel bir durumdur.The number 0 is a special case that means before the first migration and causes all migrations to be reverted. Hiçbir geçiş belirtilmemişse, komut en son geçişe varsayılan olarak ayarlanır.If no migration is specified, the command defaults to the last migration.

Seçenekler:Options:

SeçenekOption AçıklamaDescription
--connection <CONNECTION> Veritabanına bağlantı dizesi.The connection string to the database. Veya içinde belirtilen varsayılan değer AddDbContext OnConfiguring .Defaults to the one specified in AddDbContext or OnConfiguring. EF Core 5,0 ' ye eklenmiştir.Added in EF Core 5.0.

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

Aşağıdaki örnekler veritabanını belirtilen bir geçişe güncelleştirir.The following examples update the database to a specified migration. İlki geçiş adını, ikincisi ise geçiş KIMLIĞINI ve belirtilen bağlantıyı kullanır:The first uses the migration name and the second uses the migration ID and a specified connection:

dotnet ef database update InitialCreate
dotnet ef database update 20180904195021_InitialCreate --connection your_connection_string

dotnet ef dbcontext info

Bir tür hakkında bilgi alır DbContext .Gets information about a DbContext type.

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

dotnet ef dbcontext list

Kullanılabilir DbContext türleri listeler.Lists available DbContext types.

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

dotnet ef dbcontext scaffold

Bir DbContext veritabanı için ve varlık türleri için kod üretir.Generates code for a DbContext and entity types for a database. Bu komutun bir varlık türü oluşturması için, veritabanı tablosunun bir birincil anahtarı olmalıdır.In order for this command to generate an entity type, the database table must have a primary key.

DeğişkenlerindenArguments:

Bağımsız DeğişkenArgument AçıklamaDescription
<CONNECTION> Veritabanına bağlantı dizesi.The connection string to the database. ASP.NET Core 2. x projeleri için değer = Name = <name of connection string> olabilir.For ASP.NET Core 2.x projects, the value can be name=<name of connection string>. Bu durumda, ad proje için ayarlanan yapılandırma kaynaklarından gelir.In that case the name comes from the configuration sources that are set up for the project.
<PROVIDER> Kullanılacak sağlayıcı.The provider to use. Genellikle bu, NuGet paketinin adıdır, örneğin: Microsoft.EntityFrameworkCore.SqlServer .Typically this is the name of the NuGet package, for example: Microsoft.EntityFrameworkCore.SqlServer.

Seçenekler:Options:

SeçenekOption KısadırShort AçıklamaDescription
--data-annotations -d Modeli yapılandırmak için öznitelikleri kullanın (mümkün olduğunda).Use attributes to configure the model (where possible). Bu seçenek atlanırsa yalnızca Fluent API kullanılır.If this option is omitted, only the fluent API is used.
--context <NAME> -c DbContextOluşturulacak sınıfın adı.The name of the DbContext class to generate.
--context-dir <PATH> DbContextSınıf dosyasının içine yerleştirilecek dizin.The directory to put the DbContext class file in. Yollar proje dizinine göredir.Paths are relative to the project directory. Ad alanları, Klasör adlarından türetilir.Namespaces are derived from the folder names.
--context-namespace <NAMESPACE> Oluşturulan sınıf için kullanılacak ad alanı DbContext .The namespace to use for the generated DbContext class. Note: geçersiz kılmalar --namespace .Note: overrides --namespace. EF Core 5,0 ' ye eklenmiştir.Added in EF Core 5.0.
--force -f Varolan dosyaların üzerine yaz.Overwrite existing files.
--output-dir <PATH> -o İçinde varlık sınıfı dosyalarını yerleştirmek için dizin.The directory to put entity class files in. Yollar proje dizinine göredir.Paths are relative to the project directory.
--namespace <NAMESPACE> -n Tüm oluşturulan sınıflar için kullanılacak ad alanı.The namespace to use for all generated classes. Kök ad alanından ve çıkış dizininden varsayılan olarak oluşturulur.Defaults to generated from the root namespace and the output directory. EF Core 5,0 ' ye eklenmiştir.Added in EF Core 5.0.
--schema <SCHEMA_NAME>... İçin varlık türleri oluşturulacak tablo şemaları.The schemas of tables to generate entity types for. Birden çok şema belirtmek için, --schema her biri için yineleyin.To specify multiple schemas, repeat --schema for each one. Bu seçenek atlanırsa, tüm şemalar dahil edilir.If this option is omitted, all schemas are included.
--table <TABLE_NAME>...--table <TABLE_NAME>... -t İçin varlık türleri oluşturulacak tablolar.The tables to generate entity types for. Birden çok tablo belirtmek için, -t veya --table her biri için yineleyin.To specify multiple tables, repeat -t or --table for each one. Bu seçenek atlanırsa, tüm tablolar dahil edilir.If this option is omitted, all tables are included.
--use-database-names Tablo ve sütun adlarını tam olarak veritabanında göründükleri gibi kullanın.Use table and column names exactly as they appear in the database. Bu seçenek atlanırsa, veritabanı adları C# ad stili kurallarına daha yakından uyum sağlamak için değiştirilir.If this option is omitted, database names are changed to more closely conform to C# name style conventions.
--no-onconfiguring OnConfiguringOluşturulan sınıfta yönteminin oluşturulmasını engeller DbContext .Suppresses generation of the OnConfiguring method in the generated DbContext class. EF Core 5,0 ' ye eklenmiştir.Added in EF Core 5.0.
--no-pluralize Pluralizer kullanmayın.Don't use the pluralizer. EF Core 5,0 eklendiAdded in EF Core 5.0

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

Aşağıdaki örnek, tüm şemaları ve tabloları uygular ve yeni dosyaları modeller klasörüne koyar.The following example scaffolds all schemas and tables and puts the new files in the Models folder.

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ı ve bağlamı belirtilen bir ad ve ad alanı ile ayrı bir klasörde oluşturur:The following example scaffolds only selected tables and creates the context in a separate folder with a specified name and namespace:

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 yönetici aracınıkullanarak proje yapılandırma kümesinden bağlantı dizesini okur.The following example reads the connection string from the project's configuration set using the Secret Manager tool.

dotnet user-secrets set ConnectionStrings:Blogging "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Blogging"
dotnet ef dbcontext scaffold Name=ConnectionStrings:Blogging Microsoft.EntityFrameworkCore.SqlServer

dotnet ef dbcontext script

DbContext 'ten bir SQL betiği oluşturur.Generates a SQL script from the DbContext. Tüm geçişleri atlar.Bypasses any migrations. EF Core 3,0 ' ye eklenmiştir.Added in EF Core 3.0.

Seçenekler:Options:

SeçenekOption KısadırShort AçıklamaDescription
--output <FILE> -o Sonucun yazılacağı dosya.The file to write the result to.

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

dotnet ef migrations add

Yeni bir geçiş ekler.Adds a new migration.

DeğişkenlerindenArguments:

Bağımsız DeğişkenArgument AçıklamaDescription
<NAME> Geçişin adı.The name of the migration.

Seçenekler:Options:

SeçenekOption KısadırShort AçıklamaDescription
--output-dir <PATH> -o Dizin, dosyaların çıktısını almak için kullanılır.The directory use to output the files. Yollar, hedef proje dizini ile ilişkilidir.Paths are relative to the target project directory. Varsayılan olarak "geçişler" olur.Defaults to "Migrations".
--namespace <NAMESPACE> -n Oluşturulan sınıflar için kullanılacak ad alanı.The namespace to use for the generated classes. Varsayılan olarak çıkış dizininden oluşturulur.Defaults to generated from the output directory. EF Core 5,0 ' ye eklenmiştir.Added in EF Core 5.0.

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

dotnet ef migrations list

Kullanılabilir geçişleri listeler.Lists available migrations.

Seçenekler:Options:

SeçenekOption AçıklamaDescription
--connection <CONNECTION> Veritabanına bağlantı dizesi.The connection string to the database. AddDbContext veya Onyapılandırılmasında belirtilen varsayılan değeri belirler.Defaults to the one specified in AddDbContext or OnConfiguring. EF Core 5,0 ' ye eklenmiştir.Added in EF Core 5.0.
--no-connect Veritabanına bağlanma.Don't connect to the database. EF Core 5,0 ' ye eklenmiştir.Added in EF Core 5.0.

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

dotnet ef migrations remove

Son geçişi kaldırır (geçiş için yapılan kod değişikliklerini geri kaydeder).Removes the last migration (rolls back the code changes that were done for the migration).

Seçenekler:Options:

SeçenekOption KısadırShort AçıklamaDescription
--force -f Geçişi geri alma (veritabanına uygulanan değişiklikleri geri alın).Revert the migration (roll back the changes that were applied to the database).

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

dotnet ef migrations script

Geçişlerden bir SQL betiği oluşturur.Generates a SQL script from migrations.

DeğişkenlerindenArguments:

Bağımsız DeğişkenArgument AçıklamaDescription
<FROM> Geçiş başlatılıyor.The starting migration. Geçişler, ada veya KIMLIĞE göre tanımlanabilir.Migrations may be identified by name or by ID. 0 sayısı, ilk geçişten önceki anlamına gelen özel bir durumdur.The number 0 is a special case that means before the first migration. Varsayılan değer 0 ' dır.Defaults to 0.
<TO> Son geçiş.The ending migration. Son geçişin varsayılan değeri.Defaults to the last migration.

Seçenekler:Options:

SeçenekOption KısadırShort AçıklamaDescription
--output <FILE> -o Betiğe yazılacak dosya.The file to write the script to.
--idempotent -i Herhangi bir geçişte veritabanında kullanılabilecek bir betik oluşturun.Generate a script that can be used on a database at any migration.
--no-transactions SQL işlem deyimleri oluşturmamayın.Don't generate SQL transaction statements. EF Core 5,0 ' ye eklenmiştir.Added in EF Core 5.0.

Ortak seçenekler yukarıda listelenmiştir.The common options are listed above.

Aşağıdaki örnek, ınitialcreate geçişi için bir komut dosyası oluşturur:The following example creates a script for the InitialCreate migration:

dotnet ef migrations script 0 InitialCreate

Aşağıdaki örnek, ınitialcreate geçişinden sonra tüm geçişler için bir komut dosyası oluşturur.The following example creates a script for all migrations after the InitialCreate migration.

dotnet ef migrations script 20180904195021_InitialCreate

Ek kaynaklarAdditional resources