Visual Studio 'da Entity Framework Core araçları başvurusu-Paket Yöneticisi konsoluEntity Framework Core tools reference - Package Manager Console in Visual Studio

Entity Framework Core tasarım zamanı geliştirme görevlerini gerçekleştirmek için Paket Yöneticisi Konsolu (PMC) araçları.The Package Manager Console (PMC) 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, Visual Studio içinde Paket Yöneticisi konsolukullanılarak çalıştırılır.The commands run inside of Visual Studio using the Package Manager Console. Bu araçlar hem .NET Framework hem de .NET Core projeleriyle çalışır.These tools work with both .NET Framework and .NET Core projects.

Visual Studio kullanmıyorsanız bunun yerine EF Core komut satırı araçlarının kullanılması önerilir.If you aren't using Visual Studio, we recommend the EF Core Command-line Tools instead. .NET Core CLI araçları platformlar arası ve komut istemi içinde çalıştırılır.The .NET Core CLI tools are cross-platform and run inside a command prompt.

Araçları yüklemeInstalling the tools

Araçları yükleme ve güncelleştirme yordamları ASP.NET Core 2.1 + ile önceki sürümler veya diğer proje türleri arasında farklılık gösterir.The procedures for installing and updating the tools differ between ASP.NET Core 2.1+ and earlier versions or other project types.

ASP.NET Core sürüm 2,1 ve üzeriASP.NET Core version 2.1 and later

Araçlar, Microsoft.EntityFrameworkCore.Tools Microsoft. aspnetcore. app metapackageiçinde yer aldığı için ASP.NET Core 2.1 + projesine otomatik olarak eklenir.The tools are automatically included in an ASP.NET Core 2.1+ project because the Microsoft.EntityFrameworkCore.Tools package is included in the Microsoft.AspNetCore.App metapackage.

Bu nedenle, araçları yüklemek için herhangi bir şey yapmanız gerekmez, ancak şunları yapmanız gerekir:Therefore, you don't have to do anything to install the tools, but you do have to:

  • Yeni bir projedeki araçları kullanmadan önce paketleri geri yükleyin.Restore packages before using the tools in a new project.
  • Araçları daha yeni bir sürüme güncelleştirmek için bir paket yükler.Install a package to update the tools to a newer version.

Araçların en son sürümünü aldığınızdan emin olmak için aşağıdaki adımı da yapmanızı öneririz:To make sure that you're getting the latest version of the tools, we recommend that you also do the following step:

  • . Csproj dosyanızı düzenleyin ve Microsoft. entityframeworkcore. Tools paketinin en son sürümünü belirten bir satır ekleyin.Edit your .csproj file and add a line specifying the latest version of the Microsoft.EntityFrameworkCore.Tools package. Örneğin, . csproj dosyası şuna benzer bir dosya içerebilir ItemGroup :For example, the .csproj file might include an ItemGroup that looks like this:

    <ItemGroup>
      <PackageReference Include="Microsoft.AspNetCore.App" />
      <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.3" />
      <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.2" />
    </ItemGroup>
    

Aşağıdaki örnekte olduğu gibi bir ileti aldığınızda araçları güncelleştirin:Update the tools when you get a message like the following example:

EF Core araçları sürümü ' 2.1.1-RTM-30846 ', ' 2.1.3-RTM-32065 ' çalışma zamanından daha eski.The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.3-rtm-32065'. En son özellikler ve hata düzeltmeleri için araçları güncelleştirin.Update the tools for the latest features and bug fixes.

Araçları güncelleştirmek için:To update the tools:

  • En son .NET Core SDK yükler.Install the latest .NET Core SDK.
  • Visual Studio 'Yu en son sürüme güncelleştirin.Update Visual Studio to the latest version.
  • . Csproj dosyasını, daha önce gösterildiği gibi en son araçlar paketine bir paket başvurusu içerecek şekilde düzenleyin.Edit the .csproj file so that it includes a package reference to the latest tools package, as shown earlier.

Diğer sürümler ve proje türleriOther versions and project types

Paket Yöneticisi konsolunda aşağıdaki komutu çalıştırarak Paket Yöneticisi konsol araçlarını yükler:Install the Package Manager Console tools by running the following command in Package Manager Console:

Install-Package Microsoft.EntityFrameworkCore.Tools

Paket Yöneticisi konsolundaaşağıdaki komutu çalıştırarak araçları güncelleştirin.Update the tools by running the following command in Package Manager Console.

Update-Package Microsoft.EntityFrameworkCore.Tools

Yüklemeyi doğrulamaVerify the installation

Şu komutu çalıştırarak araçların yüklendiğini doğrulayın:Verify that the tools are installed by running this command:

Get-Help about_EntityFrameworkCore

Çıktı şuna benzer (hangi araçların hangi sürümünü kullandığınızı söylemez):The output looks like this (it doesn't tell you which version of the tools you're using):


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

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ı kullanmaUsing the tools

Araçları kullanmadan önce:Before using the tools:

  • Hedef ve başlangıç projesi arasındaki farkı anlayın.Understand the difference between target and startup project.
  • .NET Standard sınıf kitaplıklarıyla araçları nasıl kullanacağınızı öğrenin.Learn how to use the tools with .NET Standard class libraries.
  • ASP.NET Core projeler için ortamı ayarlayın.For ASP.NET Core projects, set the environment.

Hedef ve başlangıç projesiTarget and startup project

Komutlar bir projeye ve bir başlangıç projesinebaş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, Paket Yöneticisi konsolunda seçilen varsayılan proje hedef projem tir.By default, the Default project selected in Package Manager Console 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, Çözüm Gezgini Başlangıç projesi başlangıç Solution Explorer projem ' dir.By default, the Startup Project in Solution Explorer 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

Paket Yöneticisi konsol araçları, .NET Core veya .NET Framework projeleriyle çalışır.The Package Manager Console tools work with .NET Core or .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 olan bir .NET Core veya .NET Framework konsol uygulaması projesi oluşturabilirsiniz.In such cases, you can create a .NET Core or .NET Framework 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 veya .NET Framework çalışma zamanını kullanmaları gerekir.To do that, they need to use the .NET Core or .NET Framework 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 env: ASPNETCORE_ENVIRONMENT ayarlayın.To specify the environment for ASP.NET Core projects, set env:ASPNETCORE_ENVIRONMENT before running commands.

Ortak ParametrelerCommon parameters

Aşağıdaki tabloda tüm EF Core komutlarında ortak olan parametreler gösterilmektedir:The following table shows parameters that are common to all of the EF Core commands:

ParametreParameter AçıklamaDescription
-Bağlam<String>-Context <String> 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 parametre atlanırsa, EF Core bağlam sınıfını bulur.If this parameter is omitted, EF Core finds the context class. Birden çok bağlam sınıfı varsa, bu parametre gereklidir.If there are multiple context classes, this parameter is required.
-Proje<String>-Project <String> Hedef proje.The target project. Bu parametre atlanırsa, hedef proje olarak Package Manager konsolunun varsayılan projesi kullanılır.If this parameter is omitted, the Default project for Package Manager Console is used as the target project.
-StartupProject<String>-StartupProject <String> Başlangıç projesi.The startup project. Bu parametre atlanırsa, çözüm özelliklerindeki Başlangıç projesi hedef proje olarak kullanılır.If this parameter is omitted, the Startup project in Solution properties is used as the target project.
-Ayrıntılı-Verbose Ayrıntılı çıktıyı göster.Show verbose output.

Bir komutla ilgili yardım bilgilerini göstermek için PowerShell Get-Help komutunu kullanın.To show help information about a command, use PowerShell's Get-Help command.

İpucu

Bağlam, proje ve StartupProject parametreleri sekme genişletmeyi destekler.The Context, Project, and StartupProject parameters support tab-expansion.

Geçiş EkleAdd-Migration

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

Parametreler:Parameters:

ParametreParameter AçıklamaDescription
-Ad<String>-Name <String> Geçişin adı.The name of the migration. Bu bir Konumsal parametredir ve gereklidir.This is a positional parameter and is required.
-OutputDir<String>-OutputDir <String> 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".
-Ad alanı<String>-Namespace <String> 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. (EFCore 5.0.0 ile kullanılabilir.)(Available from EFCore 5.0.0 onwards.)

Veritabanını bırakDrop-Database

Veritabanını bırakır.Drops the database.

Parametreler:Parameters:

ParametreParameter AçıklamaDescription
-WhatIf-WhatIf 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.

Get-DbContextGet-DbContext

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

Geçişi KaldırRemove-Migration

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).

Parametreler:Parameters:

ParametreParameter AçıklamaDescription
-Force-Force 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).

Yapı iskelesi-DbContextScaffold-DbContext

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. Scaffold-DbContextBir varlık türü oluşturmak için veritabanı tablosunun bir birincil anahtarı olmalıdır.In order for Scaffold-DbContext to generate an entity type, the database table must have a primary key.

Parametreler:Parameters:

ParametreParameter AçıklamaDescription
-Bağlantı<String>-Connection <String> 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. Bu bir Konumsal parametredir ve gereklidir.This is a positional parameter and is required.
-Sağlayıcı<String>-Provider <String> 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. Bu bir Konumsal parametredir ve gereklidir.This is a positional parameter and is required.
-OutputDir<String>-OutputDir <String> Dosyaları içine koyabileceğiniz dizin.The directory to put files in. Yollar proje dizinine göredir.Paths are relative to the project directory.
-ContextDir<String>-ContextDir <String> DbContextDosyanın içine yerleştirilecek dizin.The directory to put the DbContext file in. Yollar proje dizinine göredir.Paths are relative to the project directory.
-Ad alanı<String>-Namespace <String> 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. (EFCore 5.0.0 ile kullanılabilir.)(Available from EFCore 5.0.0 onwards.)
-ContextNamespace<String>-ContextNamespace <String> 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. (EFCore 5.0.0 ile kullanılabilir.)(Available from EFCore 5.0.0 onwards.)
-Bağlam<String>-Context <String> DbContextOluşturulacak sınıfın adı.The name of the DbContext class to generate.
-Şemalar<String[]>-Schemas <String[]> İçin varlık türleri oluşturulacak tablo şemaları.The schemas of tables to generate entity types for. Bu parametre atlanırsa, tüm şemalar dahil edilir.If this parameter is omitted, all schemas are included.
-Tablolar<String[]>-Tables <String[]> İçin varlık türleri oluşturulacak tablolar.The tables to generate entity types for. Bu parametre atlanırsa, tüm tablolar dahil edilir.If this parameter is omitted, all tables are included.
-Datanot açıklamaları-DataAnnotations Modeli yapılandırmak için öznitelikleri kullanın (mümkün olduğunda).Use attributes to configure the model (where possible). Bu parametre atlanırsa yalnızca Fluent API kullanılır.If this parameter is omitted, only the fluent API is used.
-UseDatabaseNames-UseDatabaseNames 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 parametre atlanırsa, veritabanı adları C# ad stili kurallarına daha yakından uyacak şekilde değiştirilir.If this parameter is omitted, database names are changed to more closely conform to C# name style conventions.
-Force-Force Varolan dosyaların üzerine yaz.Overwrite existing files.
-Noonyapılandırıyor-NoOnConfiguring OnConfiguringOluşturulan sınıfta yönteminin oluşturulmasını engeller DbContext .Suppresses generation of the OnConfiguring method in the generated DbContext class. (EFCore 5.0.0 ile kullanılabilir.)(Available from EFCore 5.0.0 onwards.)

Örnek:Example:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Yalnızca seçili tabloları oluşturan ve bağlamı belirtilen bir ad ve ad alanı olan ayrı bir klasörde oluşturan örnek:Example that scaffolds only selected tables and creates the context in a separate folder with a specified name and namespace:

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

Betik geçişiScript-Migration

Seçilen bir geçişin tüm değişikliklerini seçili başka bir geçişe uygulayan bir SQL betiği oluşturur.Generates a SQL script that applies all of the changes from one selected migration to another selected migration.

Parametreler:Parameters:

ParametreParameter AçıklamaDescription
-Kimden<String>-From <String> 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 öncekianlamı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.
--<String>-To <String> Son geçiş.The ending migration. Son geçişin varsayılan değeri.Defaults to the last migration.
-Idempotent-Idempotent 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.
-Çıkış<String>-Output <String> Sonucun yazılacağı dosya.The file to write the result to. Bu parametre atlanırsa dosya, uygulamanın çalışma zamanı dosyaları oluşturulduğu klasörde oluşturulmuş bir adla oluşturulur, örneğin: /obj/Debug/netcoreapp2,/ghbkztfz.exe.IF this parameter is omitted, the file is created with a generated name in the same folder as the app's runtime files are created, for example: /obj/Debug/netcoreapp2.1/ghbkztfz.sql/.

İpucu

To, from ve OUTPUT parametreleri sekme genişletmeyi destekler.The To, From, and Output parameters support tab-expansion.

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

Script-Migration -To InitialCreate

Aşağıdaki örnek, geçiş KIMLIĞI kullanılarak, ı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, using the migration ID.

Script-Migration -From 20180904195021_InitialCreate

Güncelleştirme-veritabanıUpdate-Database

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.

ParametreParameter AçıklamaDescription
-Geçiş<String>-Migration <String> 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.
-Bağlantı<String>-Connection <String> 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.

İpucu

Geçiş parametresi sekme genişletmeyi destekler.The Migration parameter supports tab-expansion.

Aşağıdaki örnek tüm geçişleri geri döndürür.The following example reverts all migrations.

Update-Database -Migration 0

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:

Update-Database -Migration InitialCreate
Update-Database -Migration 20180904195021_InitialCreate -Connection your_connection_string

Ek kaynaklarAdditional resources