데이터베이스 공급자Database Providers

Entity Framework Core는 플러그 인 라이브러리 호출 데이터베이스 공급자를 통해 다양한 데이터베이스에 액세스할 수 있습니다.Entity Framework Core can access many different databases through plug-in libraries called database providers.

현재 공급자Current providers

중요

EF Core 공급자는 다양한 원본을 바탕으로 작성됩니다.EF Core providers are built by a variety of sources. 일부 공급자는 Entity Framework Core 프로젝트의 일부로 유지되지 않습니다.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 패키지NuGet Package 지원되는 데이터베이스 엔진Supported database engines 유지 관리자/공급 업체Maintainer / Vendor 참고/요구 사항Notes / Requirements 유용한 링크Useful links
Microsoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.SqlServer SQL Server 2008 이상SQL Server 2008 onwards EF Core 프로젝트(Microsoft)EF Core Project (Microsoft) docsdocs
Microsoft.EntityFrameworkCore.SqliteMicrosoft.EntityFrameworkCore.Sqlite SQLite 3.7 이상SQLite 3.7 onwards EF Core 프로젝트(Microsoft)EF Core Project (Microsoft) docsdocs
Microsoft.EntityFrameworkCore.InMemoryMicrosoft.EntityFrameworkCore.InMemory EF Core 메모리 내 데이터베이스EF Core in-memory database EF Core 프로젝트(Microsoft)EF Core Project (Microsoft) 테스트 전용For testing only docsdocs
Microsoft.EntityFrameworkCore.CosmosMicrosoft.EntityFrameworkCore.Cosmos Azure Cosmos DB SQL APIAzure Cosmos DB SQL API EF Core 프로젝트(Microsoft)EF Core Project (Microsoft) 미리 보기만Preview only 블로그blog
Npgsql.EntityFrameworkCore.PostgreSQLNpgsql.EntityFrameworkCore.PostgreSQL PostgreSQLPostgreSQL Npgsql 개발 팀Npgsql Development Team docsdocs
Pomelo.EntityFrameworkCore.MySqlPomelo.EntityFrameworkCore.MySql MySQL, MariaDBMySQL, MariaDB Pomelo Foundation 프로젝트Pomelo Foundation Project readmereadme
Pomelo.EntityFrameworkCore.MyCatPomelo.EntityFrameworkCore.MyCat MyCAT ServerMyCAT Server Pomelo Foundation 프로젝트Pomelo Foundation Project 시험판만Prerelease only readmereadme
EntityFrameworkCore.SqlServerCompact40EntityFrameworkCore.SqlServerCompact40 SQL Server Compact 4.0SQL Server Compact 4.0 Erik Ejlskov JensenErik Ejlskov Jensen .NET Framework.NET Framework wikiwiki
EntityFrameworkCore.SqlServerCompact35EntityFrameworkCore.SqlServerCompact35 SQL Server Compact 3.5SQL Server Compact 3.5 Erik Ejlskov JensenErik Ejlskov Jensen .NET Framework.NET Framework wikiwiki
FirebirdSql.EntityFrameworkCore.FirebirdFirebirdSql.EntityFrameworkCore.Firebird Firebird 2.5 및 3.xFirebird 2.5 and 3.x Jiří ČinčuraJiří Činčura docsdocs
EntityFrameworkCore.FirebirdSqlEntityFrameworkCore.FirebirdSql Firebird 2.5 및 3.xFirebird 2.5 and 3.x Rafael AlmeidaRafael Almeida wikiwiki
MySql.Data.EntityFrameworkCoreMySql.Data.EntityFrameworkCore MySQLMySQL MySQL 프로젝트(Oracle)MySQL project (Oracle) docsdocs
Oracle.EntityFrameworkCoreOracle.EntityFrameworkCore Oracle DB 11.2 이상Oracle DB 11.2 onwards OracleOracle 시험판Prerelease 웹 사이트website
IBM.EntityFrameworkCoreIBM.EntityFrameworkCore Db2, InformixDb2, Informix IBMIBM Windows 버전Windows version 블로그blog
IBM.EntityFrameworkCore-lnxIBM.EntityFrameworkCore-lnx Db2, InformixDb2, Informix IBMIBM Linux 버전Linux version 블로그blog
IBM.EntityFrameworkCore-osxIBM.EntityFrameworkCore-osx Db2, InformixDb2, Informix IBMIBM macOS 버전macOS version 블로그blog
EntityFrameworkCore.JetEntityFrameworkCore.Jet Microsoft Access 파일Microsoft Access files BubiBubi .NET Framework.NET Framework readmereadme
EntityFrameworkCore.OpenEdgeEntityFrameworkCore.OpenEdge Progress OpenEdgeProgress OpenEdge Alex WieseAlex Wiese readmereadme
Devart.Data.Oracle.EFCoreDevart.Data.Oracle.EFCore Oracle DB 9.2.0.4 이상Oracle DB 9.2.0.4 onwards DevArtDevArt 지급Paid docsdocs
Devart.Data.PostgreSql.EFCoreDevart.Data.PostgreSql.EFCore PostgreSQL 8.0 이상PostgreSQL 8.0 onwards DevArtDevArt 지급Paid docsdocs
Devart.Data.SQLite.EFCoreDevart.Data.SQLite.EFCore SQLite 3 이상SQLite 3 onwards DevArtDevArt 지급Paid docsdocs
Devart.Data.MySql.EFCoreDevart.Data.MySql.EFCore MySQL 5 이상MySQL 5 onwards DevArtDevArt 지급Paid docsdocs

향후 공급자Future Providers

Cosmos DBCosmos DB

Cosmos DB에서 SQL API용 EF Core 공급자를 개발하고 있습니다.We have been developing an EF Core provider for the SQL API in Cosmos DB. 이것이 Microsoft가 생산하는 완전한 첫 번째 문서 기반 데이터베이스 공급자가 될 것이며, 이를 통해 알게 되는 내용이 EF Core의 후속 릴리스 및 그 밖의 비관계형 공급자의 설계 개선 사항에 반영될 것입니다.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 future releases of EF Core and possibly other non-relational providers. NuGet 갤러리에서 미리 보기를 확인할 수 있습니다.A preview is available on the NuGet Gallery.

Oracle 자사 공급자Oracle first-party provider

Oracle .NET 팀에서 EF Core용 Oracle 공급자 베타를 게시했습니다.The Oracle .NET team has published the beta of the Oracle provider for EF Core. 릴리스 시점 등을 비롯한 이 공급자에 대한 질문은 Oracle 커뮤니티 사이트에 직접 남겨 주세요.Please direct any questions about this provider, including the release timeline, to the Oracle Community Site.

애플리케이션에 데이터베이스 공급자 추가Adding a database provider to your application

대부분의 EF Core용 데이터베이스 공급자는 NuGet 패키지로 배포됩니다.Most database providers for EF Core are distributed as NuGet packages. 즉, 명령줄 도구에서 dotnet을 사용하여 설치할 수 있습니다.This means they can be installed using the dotnet tool in the command line:

dotnet add package provider_package_name

또는 Visual Studio에서 NuGet의 패키지 관리자 콘솔을 사용합니다.Or in Visual Studio, using NuGet's Package Manager Console:

install-package provider_package_name

기능이 설치되면 종속성 주입 컨테이너를 사용하는 경우 DbContext, OnConfiguring 메서드 또는 AddDbContext 메서드 중 하나에서 공급자를 구성합니다.Once installed, you will configure the provider in your DbContext, either in the OnConfiguring method or in the AddDbContext method if you are using a dependency injection container. 예를 들어 다음 줄에서는 전달된 연결 문자열을 사용하여 SQL Server 공급자를 구성합니다.For example, the following line configures the SQL Server provider with the passed connection string:

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

데이터베이스 공급자는 EF Core를 확장하여 특정 데이터베이스에 고유한 기능을 사용할 수 있습니다.Database providers can extend EF Core to enable functionality unique to specific databases. 개념은 상당 부분 대부분의 데이터베이스에서 공통이며 기본 EF Core 구성 요소에 포함됩니다.Some concepts are common to most databases, and are included in the primary EF Core components. 이러한 개념에는 LINQ에서의 쿼리 표현, 트랜잭션, 데이터베이스에서 로드된 후 개체에 대한 변경 내용 추적 등이 포함됩니다.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. 예를 들어 SQL Server 공급자에서는 메모리 최적화 테이블을 구성할 수 있습니다(SQL Server 특정 기능).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. 예를 들어 관계형 데이터베이스에 대한 EF Core 공급자는 공통 Microsoft.EntityFrameworkCore.Relational 라이브러리 위에 작성되며 테이블 및 열 매핑, 외부 키 제약 조건 등을 구성하기 위한 API를 제공합니다. 일반적으로 공급자는 NuGet 패키지로 배포됩니다.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의 새 패치 버전이 릴리스되면 Microsoft.EntityFrameworkCore.Relational 패키지에 대한 업데이트도 포함됩니다.When a new patch version of EF Core is released, it often includes updates to the Microsoft.EntityFrameworkCore.Relational package. 관계형 데이터베이스 공급자를 추가하면 이 패키지는 애플리케이션의 전이적 종속성으로 전환됩니다.When you add a relational database provider, this package becomes a transitive dependency of your application. 하지만 대부분의 공급자는 EF Core와 독립적으로 릴리스되고 해당 패키지의 최신 패치 버전에 따라 달라지도록 업데이트되지 않을 수 있습니다.But many providers are released independently from EF Core and may not be updated to depend on the newer patch version of that package. 모든 버그 수정을 가져오기 위해 Microsoft.EntityFrameworkCore.Relational의 패치 버전을 애플리케이션의 직접 종속성으로 추가하는 것이 좋습니다.In order to make sure you will get all bug fixes, it is recommended that you add the patch version of Microsoft.EntityFrameworkCore.Relational as a direct dependency of your application.