Installing Entity Framework Core

Prerequisites

  • EF Core is a .NET Standard 2.0 library. So EF Core requires a .NET implementation that supports .NET Standard 2.0 to run. EF Core can also be referenced by other .NET Standard 2.0 libraries.

  • For example, you can use EF Core to develop apps that target .NET Core. Building .NET Core apps requires the .NET Core SDK. Optionally, you can also use a development environment like Visual Studio, Visual Studio for Mac, or Visual Studio Code. For more information, check Getting Started with .NET Core.

  • You can use EF Core to develop applications that target .NET Framework 4.6.1 or later on Windows, using Visual Studio. The latest version of Visual Studio is recommended. If you want to use an older version, like Visual Studio 2015, make sure you upgrade the NuGet client to version 3.6.0 to work with .NET Standard 2.0 libraries.

  • EF Core can run on other .NET implementations like Xamarin and .NET Native. But in practice those implementations have runtime limitations that may affect how well EF Core works on your app. For more information, see .NET implementations supported by EF Core.

  • Finally, different database providers may require specific database engine versions, .NET implementations, or operating systems. Make sure an EF Core database provider is available that supports the right environment for your application.

Get the Entity Framework Core runtime

To add EF Core to an application, install the NuGet package for the database provider you want to use.

If you're building an ASP.NET Core application, you don't need to install the in-memory and SQL Server providers. Those providers are included in current versions of ASP.NET Core, alongside the EF Core runtime.

To install or update NuGet packages, you can use the [.NET Core command-line interface (CLI), the Visual Studio Package Manager Dialog, or the Visual Studio Package Manager Console.

.NET Core CLI

  • Use the following .NET Core CLI command from the operating system's command line to install or update the EF Core SQL Server provider:

    dotnet add package Microsoft.EntityFrameworkCore.SqlServer
    
  • You can indicate a specific version in the dotnet add package command, using the -v modifier. For example, to install EF Core 2.2.0 packages, append -v 2.2.0 to the command.

For more information, see .NET command-line interface (CLI) tools.

Visual Studio NuGet Package Manager Dialog

  • From the Visual Studio menu, select Project > Manage NuGet Packages

  • Click on the Browse or the Updates tab

  • To install or update the SQL Server provider, select the Microsoft.EntityFrameworkCore.SqlServer package, and confirm.

For more information, see NuGet Package Manager Dialog.

Visual Studio NuGet Package Manager Console

  • From the Visual Studio menu, select Tools > NuGet Package Manager > Package Manager Console

  • To install the SQL Server provider, run the following command in the Package Manager Console:

    Install-Package Microsoft.EntityFrameworkCore.SqlServer
    
  • To update the provider, use the Update-Package command.

  • To specify a specific version, use the -Version modifier. For example, to install EF Core 2.2.0 packages, append -Version 2.2.0 to the commands

For more information, see Package Manager Console.

Get the Entity Framework Core tools

You can install tools to carry out EF Core-related tasks in your project, like creating and applying database migrations, or creating an EF Core model based on an existing database.

Two sets of tools are available:

Although you can also use the dotnet ef commands from the Package Manager Console, it's recommended to use the Package Manager Console tools when you're using Visual Studio:

  • They automatically work with the current project selected in the PMC in Visual Studio, without requiring manually switching directories.

  • They automatically open files generated by the commands in Visual Studio after the command is completed.

Get the .NET Core CLI tools

.NET Core CLI tools require the .NET Core SDK, mentioned earlier in Prerequisites.

The dotnet ef commands are included in current versions of the .NET Core SDK, but to enable the commands on a specific project, you have to install the Microsoft.EntityFrameworkCore.Design package:

dotnet add package Microsoft.EntityFrameworkCore.Design	

For ASP.NET Core apps, this package is included automatically.

Important

Always use the version of the tools package that matches the major version of the runtime packages.

Get the Package Manager Console tools

To get the Package Manager Console tools for EF Core, install the Microsoft.EntityFrameworkCore.Tools package. For example, from Visual Studio:

Install-Package Microsoft.EntityFrameworkCore.Tools

For ASP.NET Core apps, this package is included automatically.

Upgrading to the latest EF Core

  • Any time we release a new version of EF Core, we also release a new version of the providers that are part of the EF Core project, like Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.Sqlite, and Microsoft.EntityFrameworkCore.InMemory. You can just upgrade to the new version of the provider to get all the improvements.

  • EF Core, together with the SQL Server and the in-memory providers are included in current versions of ASP.NET Core. To upgrade an existing ASP.NET Core application to a newer version of EF Core, always upgrade the version of ASP.NET Core.

  • If you need to update an application that is using a third-party database provider, always check for an update of the provider that is compatible with the version of EF Core you want to use. For example, database providers for previous versions are not compatible with version 2.0 of the EF Core runtime.

  • Third-party providers for EF Core usually don't release patch versions alongside the EF Core runtime. To upgrade an application that uses a third-party provider to a patch version of EF Core, you may need to add a direct reference to individual EF Core runtime components, such as Microsoft.EntityFrameworkCore, and Microsoft.EntityFrameworkCore.Relational.

  • If you're upgrading an existing application to the latest version of EF Core, some references to older EF Core packages may need to be removed manually:

    • Database provider design-time packages such as Microsoft.EntityFrameworkCore.SqlServer.Design are no longer required or supported from EF Core 2.0 and later, but aren't automatically removed when upgrading the other packages.

    • The .NET CLI tools are included in the .NET SDK since version 2.1, so the reference to that package can be removed from the project file:

      <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
      
  • Applications that target .NET Framework may need changes to work with .NET Standard 2.0 libraries:

    • Edit the project file and make sure the following entry appears in the initial property group:

      <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
      
    • For test projects, also make sure the following entry is present:

      <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>