Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
fix typo (from PR#630)
  • Loading branch information
divega committed Feb 25, 2018
1 parent c9f4251 commit 235c3a1
Show file tree
Hide file tree
Showing 12 changed files with 68 additions and 389 deletions.
49 changes: 0 additions & 49 deletions entity-framework/core/providers/devart/index.md

This file was deleted.

44 changes: 0 additions & 44 deletions entity-framework/core/providers/firebird-community/index.md

This file was deleted.

46 changes: 0 additions & 46 deletions entity-framework/core/providers/ibm/index.md

This file was deleted.

74 changes: 67 additions & 7 deletions entity-framework/core/providers/index.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,77 @@
---
---
title: Database Providers - EF Core
author: rowanmiller
ms.author: divega

ms.date: 10/27/2016

ms.date: 2/23/2018
ms.assetid: 14fffb6c-a687-4881-a094-af4a1359a296
ms.technology: entity-framework-core

uid: core/providers/index
---

# Database Providers

Entity Framework Core uses a provider model to allow EF to be used to access many different databases. Some concepts are common to most databases, and are included in the primary EF Core components. Such concepts include expressing queries in LINQ, transactions, and tacking changes to objects once they are loaded from the database. Some concepts are specific to a particular provider. For example, the SQL Server provider allows you to configure memory-optimized tables (a feature specific to SQL Server). Other concepts are specific to a class of providers. For example, EF Core providers for relational databases build on the common `Microsoft.EntityFrameworkCore.Relational` library, which provides APIs for configuring table and column mappings, foreign key constraints, etc.
Entity Framework Core can access many different databases through plug-in libraries called database providers.

## Current providers
> [!IMPORTANT]
> EF Core providers are built by a variety of sources. Not all providers are maintained as part of the Entity Framework Core project. When considering a provider, be sure to evaluate quality, licensing, support, etc. to ensure they meet your requirements. Also make sure you review each provider's documentation for detailed version compatibility information.
| NuGet Package | Supported database engines | Maintainer / Vendor | Notes | Useful links |
|:------------------------------------------------------------------------------------------------------------------|:---------------------------|:------------------------------------------------------------------------------|:----------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Microsoft.EntityFrameworkCore.SqlServer](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer) | SQL Server 2008 onwards | [EF Core Project](https://github.com/aspnet/EntityFrameworkCore/) (Microsoft) | | [docs](xref:core/providers/sql-server/index) |
| [Microsoft.EntityFrameworkCore.Sqlite](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.Sqlite) | SQLite 3.7 onwards | [EF Core Project](https://github.com/aspnet/EntityFrameworkCore/) (Microsoft) | | [docs](xref:core/providers/sqlite/index) |
| [Microsoft.EntityFrameworkCore.InMemory](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.InMemory) | EF Core in-memory database | [EF Core Project](https://github.com/aspnet/EntityFrameworkCore/) (Microsoft) | For testing only | [docs](xref:core/providers/in-memory/index) |
| [Npgsql.EntityFrameworkCore.PostgreSQL](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer) | PostgreSQL | [Npgsql Development Team](https://github.com/npgsql) | | [docs](http://www.npgsql.org/efcore/index.html) |
| [Pomelo.EntityFrameworkCore.MySql](https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql) | MySQL, MariaDB | [Pomelo Foundation Project](https://github.com/PomeloFoundation) | | [readme](https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/blob/master/README.md) |
| [Pomelo.EntityFrameworkCore.MyCat](https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MyCat) | MyCAT Server | [Pomelo Foundation Project](https://github.com/PomeloFoundation) | Up to EF Core 1.1 | [readme](https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MyCat/blob/master/README.md) |
| [EntityFrameworkCore.SqlServerCompact40](https://www.nuget.org/packages/EntityFrameworkCore.SqlServerCompact40) | SQL Server Compact 4.0 | [Erik Ejlskov Jensen](https://github.com/ErikEJ/) | .NET Framework | [wiki](https://github.com/ErikEJ/EntityFramework.SqlServerCompact/wiki/Using-EF-Core-with-SQL-Server-Compact-in-Traditional-.NET-Applications) |
| [EntityFrameworkCore.SqlServerCompact35](https://www.nuget.org/packages/EntityFrameworkCore.SqlServerCompact35) | SQL Server Compact 3.5 | [Erik Ejlskov Jensen](https://github.com/ErikEJ/) | .NET Framework | [wiki](https://github.com/ErikEJ/EntityFramework.SqlServerCompact/wiki/Using-EF-Core-with-SQL-Server-Compact-in-Traditional-.NET-Applications) |
| [MySql.Data.EntityFrameworkCore](https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore) | MySQL | [MySQL project](http://dev.mysql.com) (Oracle) | | [docs](https://dev.mysql.com/doc/connector-net/en/) |
| [EntityFrameworkCore.FirebirdSql](https://www.nuget.org/packages/EntityFrameworkCore.FirebirdSql/) | Firebird 2.5 and 3.x | [Rafael Almeida](https://github.com/ralmsdeveloper) | EF Core 2.0 onwards | [wiki](https://github.com/ralmsdeveloper/EntityFrameworkCore.FirebirdSQL/wiki) |
| [IBM.EntityFrameworkCore](https://www.nuget.org/packages/IBM.EntityFrameworkCore) | Db2, Informix | [IBM](https://ibm.com) | Up to EF Core 1.1, Windows | [FAQ](https://www.ibm.com/developerworks/community/blogs/96960515-2ea1-4391-8170-b0515d08e4da/entry/Instructions_for_downloading_and_using_DB2_NET_Core_provider_package) |
| [IBM.EntityFrameworkCore-lnx](https://www.nuget.org/packages/IBM.EntityFrameworkCore-lnx) | Db2, Informix | [IBM](https://ibm.com) | Up to EF Core 1.1, Linux | [FAQ](https://www.ibm.com/developerworks/community/blogs/96960515-2ea1-4391-8170-b0515d08e4da/entry/Instructions_for_downloading_and_using_DB2_NET_Core_provider_package) |
| [Devart.Data.Oracle.EFCore](https://www.nuget.org/packages/Devart.Data.Oracle.EFCore/) | Oracle 9.2.0.4 onwards | [DevArt](https://www.devart.com/) | Paid | [docs](https://www.devart.com/dotconnect/oracle/docs/) |
| [Devart.Data.PostgreSql.EFCore](https://www.nuget.org/packages/Devart.Data.PostgreSql.EFCore/) | PostgreSQL 8.0 onwards | [DevArt](https://www.devart.com/) | Paid | [docs](https://www.devart.com/dotconnect/postgresql/docs/) |
| [Devart.Data.SQLite.EFCore](https://www.nuget.org/packages/Devart.Data.SQLite.EFCore/) | SQLite 3 onwards | [DevArt](https://www.devart.com/) | Paid | [docs](https://www.devart.com/dotconnect/sqlite/docs/) |
| [Devart.Data.MySql.EFCore](https://www.nuget.org/packages/Devart.Data.MySql.EFCore/) | MySQL 5 onwards | [DevArt](https://www.devart.com/) | Paid | [docs](https://www.devart.com/dotconnect/mysql/docs/) |
| [EntityFrameworkCore.Jet](https://www.nuget.org/packages/EntityFrameworkCore.Jet/) | Microsoft Access files | [Bubi](https://github.com/bubibubi) | EF Core 2.0, .NET Framework | [readme](https://github.com/bubibubi/EntityFrameworkCore.Jet/blob/master/docs/README.md) |

## Future Providers

### Cosmos DB

We have been developing an EF Core provider for the DocumentDB API in Cosmos DB. This will be the first complete document-oriented database provider we have produced, and the learnings from this exercise are going to inform improvements in the design of the subsequent release after 2.1. The current plan is to publish an early preview of the provider in the 2.1 timeframe.

### Oracle
The Oracle .NET team has announced they are planning to release a first-party provider for EF Core 2.0 approximately in the third quarter of 2018. See their [statement of direction for .NET Core and Entity Framework Core](http://www.oracle.com/technetwork/topics/dotnet/tech-info/odpnet-dotnet-ef-core-sod-4395108.pdf) for more information.
Please direct any questions about this provider, including the release timeline, to the [Oracle Community Site](https://community.oracle.com/).

In the meanwhile, the EF team has produced a [sample EF Core provider for Oracle databases](https://github.com/aspnet/EntityFrameworkCore/blob/dev/samples/OracleProvider/README.md). The purpose of the project is not to produce an EF Core provider owned by Microsoft, but to help us identify gaps in EF Core's relational and base functionality which we need to address in order to better support Oracle, and to jumpstart the development of other Oracle providers for EF Core either by Oracle or third parties.

## Setting up a provider in your application

Most database providers for EF Core are distributed as NuGet packages. This means they can be installed using the `dotnet` tool in the command line:

``` console
dotnet add package provider_package_name
```

Or in Visual Studio, using NuGet's Package Manager Console:

``` powershell
install-package provider_package_name
```

## Using a database provider in your application

You will then configure the provider in your `DbContext` either using the `OnConfiguring` method or if the `AddDbContext` method if you are using a dependency injection container. E.g. the following line configures the SQL Server provider with the passed connection string:

``` csharp
optionsBuilder.UseSqlServer("Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");
```

Database providers can extend EF Core to enable functionality unique to specific databases. Some concepts are common to most databases, and are included in the primary EF Core components. Such concepts include expressing queries in LINQ, transactions, and tracking changes to objects once they are loaded from the database. Some concepts are specific to a particular provider. For example, the SQL Server provider allows you to [configure memory-optimized tables](xref:core/providers/sql-server/memory-optimized-tables) (a feature specific to SQL Server). Other concepts are specific to a class of providers. For example, EF Core providers for relational databases build on the common `Microsoft.EntityFrameworkCore.Relational` library, which provides APIs for configuring table and column mappings, foreign key constraints, etc.
Providers are usually distributed as NuGet packages.

EF Core providers are built by a variety of sources. Not all providers are maintained as part of the Entity Framework Core project. When considering a third party provider, be sure to evaluate quality, licensing, support, etc. to ensure they meet your requirements.
> [!IMPORTANT]
> When new patches containing bug fixes are released for EF Core, some of the fixes are contained in the `Microsoft.EntityFrameworkCore.Relational` package. It is recommended that you add the latest patched version of this package as a direct dependency if you are using any of the relational database providers.
36 changes: 0 additions & 36 deletions entity-framework/core/providers/my-cat/index.md

This file was deleted.

Loading

0 comments on commit 235c3a1

Please sign in to comment.