다음을 통해 공유


종속성 확인

참고 항목

EF6 이상만 - 이 페이지에서 다루는 기능, API 등은 Entity Framework 6에 도입되었습니다. 이전 버전을 사용하는 경우 이 정보의 일부 또는 전체가 적용되지 않습니다.

EF6부터 Entity Framework에는 필요한 서비스 구현을 획득하기 위한 범용 메커니즘이 포함되어 있습니다. 즉, EF가 일부 인터페이스 또는 기본 클래스의 인스턴스를 사용하는 경우 사용할 인터페이스 또는 기본 클래스의 구체적인 구현을 요청합니다. 이 작업은 IDbDependencyResolver 인터페이스를 사용하여 수행됩니다.

public interface IDbDependencyResolver
{
    object GetService(Type type, object key);
}

GetService 메서드는 일반적으로 EF에서 호출되며 EF 또는 애플리케이션에서 제공하는 IDbDependencyResolver 구현을 통해 처리됩니다. 호출 시 형식 인수는 요청되는 서비스의 인터페이스 또는 기본 클래스 형식이며, 키 개체는 null이거나 요청된 서비스에 대한 컨텍스트 정보를 제공하는 개체입니다.

달리 명시하지 않는 한 반환된 개체는 싱글톤으로 사용할 수 있으므로 스레드로부터 안전해야 합니다. 대부분의 경우 반환된 개체는 팩터리입니다. 이때 팩터리 자체는 스레드로부터 안전해야 하지만 팩터리에서 반환된 개체는 사용할 때마다 팩터리에서 새 인스턴스를 요청하므로 스레드로부터 안전할 필요가 없습니다.

이 문서에는 IDbDependencyResolver를 구현하는 방법에 대한 전체 세부 정보가 포함되어 있지 않으며, 대신 EF가 GetService를 호출하는 서비스 형식(즉, 인터페이스 및 기본 클래스 형식)에 대한 참조 역할을 하며 이러한 각 호출에 대한 키 개체의 의미 체계가 포함됩니다.

System.Data.Entity.IDatabaseInitializer<TContext>

도입된 버전: EF6.0.0

반환된 개체: 지정된 컨텍스트 형식에 대한 데이터베이스 이니셜라이저

: 사용되지 않으며 null이 됩니다.

Func<System.Data.Entity.Migrations.Sql.MigrationSqlGenerator>

도입된 버전: EF6.0.0

반환된 개체: 데이터베이스 이니셜라이저를 사용하여 데이터베이스를 만드는 것과 같이 마이그레이션 및 데이터베이스를 생성하는 기타 작업에 사용할 수 있는 SQL 생성기를 생성하는 팩터리입니다.

: SQL이 생성될 경우 데이터베이스 유형을 지정하는 ADO.NET 공급자 고정 이름을 포함하는 문자열입니다. 예를 들어 "System.Data.SqlClient" 키에 대해 SQL Server SQL 생성기가 반환됩니다.

참고 항목

EF6의 공급자 관련 서비스에 대한 자세한 내용은 EF6 공급자 모델 섹션을 참조하세요.

System.Data.Entity.Core.Common.DbProviderServices

도입된 버전: EF6.0.0

반환된 개체: 지정된 공급자 고정 이름에 사용할 EF 공급자입니다.

: 공급자가 필요한 경우 데이터베이스 유형을 지정하는 ADO.NET 공급자 고정 이름을 포함하는 문자열입니다. 예를 들어 "System.Data.SqlClient" 키에 대해 SQL Server 공급자가 반환됩니다.

참고 항목

EF6의 공급자 관련 서비스에 대한 자세한 내용은 EF6 공급자 모델 섹션을 참조하세요.

System.Data.Entity.Infrastructure.IDbConnectionFactory

도입된 버전: EF6.0.0

반환된 개체: EF가 규칙에 따라 데이터베이스 연결을 만들 때 사용할 연결 팩터리입니다. 즉, EF에 연결 또는 연결 문자열이 제공되지 않고 app.config 또는 web.config에서 연결 문자열을 찾을 수 없는 경우 규칙에 따라 이 서비스를 사용하여 연결을 만듭니다. 연결 팩터리를 변경하면 EF가 기본적으로 다른 유형의 데이터베이스(예: SQL Server Compact Edition)를 사용할 수 있습니다.

: 사용되지 않으며 null이 됩니다.

참고 항목

EF6의 공급자 관련 서비스에 대한 자세한 내용은 EF6 공급자 모델 섹션을 참조하세요.

System.Data.Entity.Infrastructure.IManifestTokenService

도입된 버전: EF6.0.0

반환된 개체: 연결에서 공급자 매니페스트 토큰을 생성할 수 있는 서비스입니다. 이 서비스는 대개 두 가지 방법으로 사용됩니다. 먼저 모델을 빌드할 때 Code First가 데이터베이스에 연결되는 것을 방지하는 데 사용할 수 있습니다. 둘째, Code First가 특정 데이터베이스 버전에 대한 모델을 강제로 빌드하는 데 사용할 수 있습니다. 예를 들어 SQL Server 2008을 사용하는 경우에도 SQL Server 2005에 대한 모델을 강제로 빌드할 수 있습니다.

개체 수명: 싱글톤 - 동일한 개체를 여러 스레드에서 동시에 여러 번 사용할 수 있습니다.

: 사용되지 않으며 null이 됩니다.

System.Data.Entity.Infrastructure.IDbProviderFactoryService

도입된 버전: EF6.0.0

반환된 개체: 지정된 연결에서 공급자 팩터리를 가져올 수 있는 서비스입니다. .NET 4.5에서 공급자는 연결에서 공개적으로 액세스할 수 있습니다. .NET 4에서 이 서비스의 기본 구현은 몇 가지 추론을 사용하여 일치하는 공급자를 찾습니다. 찾는 데 실패하는 경우에는 이 서비스의 새 구현을 등록하여 적절한 해결 방법을 제공할 수 있습니다.

: 사용되지 않으며 null이 됩니다.

Func<DbContext, System.Data.Entity.Infrastructure.IDbModelCacheKey>

도입된 버전: EF6.0.0

반환된 개체: 지정된 컨텍스트에 대한 모델 캐시 키를 생성하는 팩터리입니다. 기본적으로 EF는 공급자당 DbContext 유형당 하나의 모델을 캐시합니다. 이 서비스의 다른 구현을 사용하여 다른 정보(예: 스키마 이름)를 캐시 키에 추가할 수 있습니다.

: 사용되지 않으며 null이 됩니다.

System.Data.Entity.Spatial.DbSpatialServices

도입된 버전: EF6.0.0

반환된 개체: 지리 및 기하 공간 유형의 기본 EF 공급자에 대한 지원을 추가하는 EF 공간 공급자입니다.

: DbSpatialServices는 두 가지 방법으로 요청됩니다. 먼저 DbProviderInfo 개체(고정 이름 및 매니페스트 토큰 포함)를 키로 사용하여 공급자별 공간 서비스를 요청합니다. 둘째, 키 없이 DbSpatialServices를 요청할 수 있습니다. 독립 실행형 DbGeography 또는 DbGeometry 형식을 만들 때 사용되는 "전역 공간 공급자"를 확인하는 데 사용됩니다.

참고 항목

EF6의 공급자 관련 서비스에 대한 자세한 내용은 EF6 공급자 모델 섹션을 참조하세요.

Func<System.Data.Entity.Infrastructure.IDbExecutionStrategy>

도입된 버전: EF6.0.0

반환된 개체: 데이터베이스에 대해 쿼리 및 명령이 실행될 때 공급자가 다시 시도 또는 기타 동작을 구현할 수 있는 선택적 서비스입니다. 구현이 제공되지 않는 경우 EF는 단순히 명령을 실행하고 throw된 예외를 전파합니다. SQL Server의 경우 이 서비스는 SQL Azure와 같은 클라우드 기반 데이터베이스 서버에서 실행할 때 특히 유용한 재시도 정책을 제공하는 데 사용됩니다.

: 공급자 고정 이름 및 선택적으로 실행 전략을 사용할 서버 이름을 포함하는 ExecutionStrategyKey 개체입니다.

참고 항목

EF6의 공급자 관련 서비스에 대한 자세한 내용은 EF6 공급자 모델 섹션을 참조하세요.

Func<DbConnection, string, System.Data.Entity.Migrations.History.HistoryContext>

도입된 버전: EF6.0.0

반환된 개체: 공급자가 EF 마이그레이션에서 사용하는 __MigrationHistory 테이블에 대한 HistoryContext 매핑을 구성할 수 있도록 하는 팩터리입니다. HistoryContext는 Code First DbContext이며 일반 흐름 API를 사용하여 테이블 이름 및 열 매핑 사양과 같은 항목을 변경하도록 구성할 수 있습니다.

: 사용되지 않으며 null이 됩니다.

참고 항목

EF6의 공급자 관련 서비스에 대한 자세한 내용은 EF6 공급자 모델 섹션을 참조하세요.

System.Data.Common.DbProviderFactory

도입된 버전: EF6.0.0

반환된 개체: 지정된 공급자 고정 이름에 사용할 ADO.NET 공급자입니다.

: ADO.NET 공급자 고정 이름을 포함하는 문자열입니다.

참고 항목

기본 구현에서는 일반 ADO.NET 공급자 등록을 사용하기 때문에 이 서비스는 일반적으로 직접 변경되지 않습니다. EF6의 공급자 관련 서비스에 대한 자세한 내용은 EF6 공급자 모델 섹션을 참조하세요.

System.Data.Entity.Infrastructure.IProviderInvariantName

도입된 버전: EF6.0.0

반환된 개체: 지정된 유형의 DbProviderFactory에 대한 공급자 고정 이름을 확인하는 데 사용되는 서비스입니다. 이 서비스의 기본 구현에서는 ADO.NET 공급자 등록을 사용합니다. 즉, DbProviderFactory가 EF에서 확인되기 때문에 ADO.NET 공급자가 일반적인 방법으로 등록되지 않은 경우 이 서비스도 확인해야 합니다.

: 고정 이름이 필요한 DbProviderFactory 인스턴스입니다.

참고 항목

EF6의 공급자 관련 서비스에 대한 자세한 내용은 EF6 공급자 모델 섹션을 참조하세요.

System.Data.Entity.Core.Mapping.ViewGeneration.IViewAssemblyCache

도입된 버전: EF6.0.0

반환된 개체: 미리 생성된 보기가 포함되는 어셈블리의 캐시입니다. 대체는 일반적으로 검색을 수행하지 않고 미리 생성된 보기가 포함된 어셈블리를 EF에 알리는 데 사용됩니다.

: 사용되지 않으며 null이 됩니다.

System.Data.Entity.Infrastructure.Pluralization.IPluralizationService

도입된 버전: EF6.0.0

반환된 개체: EF에서 이름을 복수화 및 단일화하는 데 사용하는 서비스입니다. 기본적으로 영어 복수화 서비스가 사용됩니다.

: 사용되지 않으며 null이 됩니다.

System.Data.Entity.Infrastructure.Interception.IDbInterceptor

도입된 버전: EF6.0.0

반환된 개체: 애플리케이션이 시작될 때 등록되어야 하는 인터셉터입니다. 이러한 개체는 GetServices 호출을 사용하여 요청되며 종속성 해결 확인자에서 반환된 모든 인터셉터가 등록됩니다.

: 사용되지 않으며 null이 됩니다.

Func<System.Data.Entity.DbContext, Action<string>, System.Data.Entity.Infrastructure.Interception.DatabaseLogFormatter>

도입된 버전: EF6.0.0

반환된 개체: 지정된 컨텍스트에 context.Database.Log 속성이 설정될 때 사용되는 데이터베이스 로그 포맷터를 생성하는 데 사용되는 팩터리입니다.

: 사용되지 않으며 null이 됩니다.

Func<System.Data.Entity.DbContext>

도입된 버전: EF6.1.0

반환된 개체: 액세스 가능한 매개 변수가 없는 생성자가 컨텍스트에 없는 경우 마이그레이션을 위한 컨텍스트 인스턴스를 만드는 데 사용되는 팩터리입니다.

: 팩터리가 필요한 파생 DbContext 형식에 대한 Type 개체입니다.

Func<System.Data.Entity.Core.Metadata.Edm.IMetadataAnnotationSerializer>

도입된 버전: EF6.1.0

반환된 개체: 강력한 형식의 사용자 지정 주석을 직렬화하기 위해 serializer를 만드는 데 사용되는 팩터리로, Code First 마이그레이션 사용할 수 있도록 XML로 직렬화 및 역직렬화할 수 있습니다.

: 직렬화 또는 역직렬화되는 주석의 이름입니다.

Func<System.Data.Entity.Infrastructure.TransactionHandler>

도입된 버전: EF6.1.0

반환된 개체: 커밋 실패 처리와 같은 상황에 특별한 처리가 적용될 수 있도록 트랜잭션에 대한 처리기를 만드는 데 사용되는 팩터리입니다.

: 공급자 고정 이름 및 선택적으로 트랜잭션 처리기가 사용될 서버 이름을 포함하는 ExecutionStrategyKey 개체입니다.