다음을 통해 공유


DbContext 클래스

정의

DbContext instance 데이터베이스에서 쿼리하고 변경 내용을 그룹화한 다음 저장소에 단위로 다시 쓸 수 있도록 작업 단위 및 리포지토리 패턴의 조합을 나타냅니다. DbContext는 개념적으로 ObjectContext와 유사합니다.

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification="Casing is intentional")]
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
type DbContext = class
    interface IDisposable
    interface IObjectContextAdapter
Public Class DbContext
Implements IDisposable, IObjectContextAdapter
상속
DbContext
파생
특성
구현

설명

DbContext는 일반적으로 모델의 루트 엔터티에 대한 속성을 포함하는 DbSet<TEntity> 파생 형식과 함께 사용됩니다. 이러한 집합은 파생 클래스의 인스턴스가 만들어질 때 자동으로 초기화됩니다. 이 동작은 특성을 전체 파생 컨텍스트 클래스 또는 클래스의 개별 속성에 적용 SuppressDbSetInitializationAttribute 하여 수정할 수 있습니다. 컨텍스트를 지원하는 엔터티 데이터 모델은 몇 가지 방법으로 지정할 수 있습니다. Code First 접근 방식을 사용하는 경우 파생 컨텍스트의 DbSet<TEntity> 속성은 규칙에 따라 모델을 빌드하는 데 사용됩니다. 보호된 OnModelCreating 메서드를 재정의하여 이 모델을 조정할 수 있습니다. 에서 를 명시적으로 DbModelBuilder 만들고 DbCompiledModel 이 모델을 DbContext 생성자 중 하나에 전달하여 Model First 접근 방식에 사용되는 모델에 대한 더 많은 제어를 얻을 수 있습니다. Database First 또는 Model First 접근 방식을 사용하는 경우 엔터티 Designer(또는 EDMX 파일 생성을 통해 수동으로) 엔터티 데이터 모델을 만들 수 있으며 엔터티 연결 문자열 또는 EntityConnection 개체를 사용하여 이 모델을 지정할 수 있습니다. 데이터베이스의 이름을 포함하는 데이터베이스에 대한 연결은 몇 가지 방법으로 지정할 수 있습니다. 매개 변수가 없는 DbContext 생성자가 파생 컨텍스트에서 호출되는 경우 파생 컨텍스트의 이름을 사용하여 app.config 또는 web.config 파일에서 연결 문자열을 찾습니다. 연결 문자열을 찾을 수 없으면 이름이 클래스에 등록된 DefaultConnectionFactory에 Database 전달됩니다. 연결 팩터리는 기본 연결 문자열에서 컨텍스트 이름을 데이터베이스 이름으로 사용합니다. (다른 DefaultConnectionFactory가 등록되지 않은 경우 이 기본 연결 문자열은 로컬 컴퓨터에서 .\SQLEXPRESS를 가리킵니다.) 파생 컨텍스트 이름을 사용하는 대신 문자열을 사용하는 DbContext 생성자 중 하나에 이름을 전달하여 연결/데이터베이스 이름을 명시적으로 지정할 수도 있습니다. 이 이름을 "name=myname" 형식으로 전달할 수도 있습니다. 이 경우 이 이름이 구성 파일에 있어야 하며, 그렇지 않으면 예외가 throw됩니다. app.config 또는 web.config 파일에 있는 연결은 일반 데이터베이스 연결 문자열(특수 Entity Framework 연결 문자열이 아님)일 수 있습니다. 이 경우 DbContext는 Code First를 사용합니다. 그러나 구성 파일에 있는 연결이 특별한 Entity Framework 연결 문자열인 경우 DbContext는 Database/Model First를 사용하고 연결 문자열에 지정된 모델이 사용됩니다. 기존 또는 명시적으로 만들어진 DbConnection을 데이터베이스/연결 이름 대신 사용할 수도 있습니다. DbContext DbModelBuilderVersionAttribute 에서 파생된 클래스에 를 적용하여 모델을 만들 때 컨텍스트에서 사용하는 규칙의 버전을 설정할 수 있습니다. 특성이 적용되지 않으면 최신 버전의 규칙이 사용됩니다.

생성자

DbContext()

연결이 만들어질 데이터베이스의 이름을 만들기 위해 규칙을 사용하여 새 컨텍스트 인스턴스를 생성합니다. 규칙별 이름은 파생 컨텍스트 클래스의 전체 이름(네임스페이스 + 클래스 이름)입니다. 연결을 만드는 데 사용되는 방법에 대한 클래스 설명을 참조하세요.

DbContext(DbCompiledModel)

연결이 만들어질 데이터베이스의 이름을 만들기 위해 규칙을 사용하여 새 컨텍스트 인스턴스를 생성하고 지정된 모델에서 초기화합니다. 규칙별 이름은 파생 컨텍스트 클래스의 전체 이름(네임스페이스 + 클래스 이름)입니다. 연결을 만드는 데 사용되는 방법에 대한 클래스 설명을 참조하세요.

DbContext(DbConnection, Boolean)

데이터베이스에 연결하기 위해 기존 연결을 사용하여 새 컨텍스트 인스턴스를 생성합니다. 가 인 경우 contextOwnsConnectionfalse컨텍스트가 삭제되면 연결이 삭제되지 않습니다.

DbContext(DbConnection, DbCompiledModel, Boolean)

데이터베이스에 연결하기 위해 기존 연결을 사용하여 새 컨텍스트 인스턴스를 생성하고 지정된 모델에서 초기화합니다. 가 인 경우 contextOwnsConnectionfalse컨텍스트가 삭제되면 연결이 삭제되지 않습니다.

DbContext(ObjectContext, Boolean)

기존 ObjectContext 주위에 instance 새 컨텍스트를 생성합니다.

DbContext(ObjectContext, Boolean)

기존 ObjectContext 주위에 instance 새 컨텍스트를 생성합니다.

DbContext(String)

지정된 문자열을 연결이 만들어질 데이터베이스의 이름 또는 연결 문자열로 사용하여 새 컨텍스트 인스턴스를 생성합니다. 연결을 만드는 데 사용되는 방법에 대한 클래스 설명을 참조하세요.

DbContext(String, DbCompiledModel)

지정된 문자열을 연결이 만들어질 데이터베이스의 이름 또는 연결 문자열로 사용하여 새 컨텍스트 인스턴스를 생성하고 지정된 모델에서 초기화합니다. 연결을 만드는 데 사용되는 방법에 대한 클래스 설명을 참조하세요.

속성

ChangeTracker

엔터티의 변경 내용 추적을 처리하는 컨텍스트의 기능에 액세스할 수 있도록 합니다.

Configuration

컨텍스트의 구성 옵션에 액세스할 수 있도록 합니다.

Database

기본 데이터베이스에 대한 생성/삭제/존재 검사를 허용하는 이 컨텍스트에 대한 데이터베이스 instance 만듭니다.

메서드

Dispose()

protected Dispose 메서드를 호출합니다.

Dispose(Boolean)

컨텍스트를 삭제합니다. 기본은 이 컨텍스트에 ObjectContext 의해 만들어진 경우 또는 이 컨텍스트를 만들 때 소유권이 이 컨텍스트에 전달된 경우에도 삭제됩니다. 데이터베이스(DbConnection 개체)에 대한 연결도 이 컨텍스트에 의해 만들어진 경우 삭제되거나 이 컨텍스트를 만들 때 소유권이 이 컨텍스트에 전달되었습니다.

Entry(Object)

DbEntityEntry 엔터티에 대한 정보와 엔터티에 대한 작업을 수행하는 기능에 대한 액세스를 제공하는 지정된 엔터티에 대한 개체를 가져옵니다.

Entry<TEntity>(TEntity)

DbEntityEntry<TEntity> 엔터티에 대한 정보와 엔터티에 대한 작업을 수행하는 기능에 대한 액세스를 제공하는 지정된 엔터티에 대한 개체를 가져옵니다.

Equals(Object)

DbContext instance 데이터베이스에서 쿼리하고 변경 내용을 그룹화한 다음 저장소에 단위로 다시 쓸 수 있도록 작업 단위 및 리포지토리 패턴의 조합을 나타냅니다. DbContext는 개념적으로 ObjectContext와 유사합니다.

GetHashCode()

DbContext instance 데이터베이스에서 쿼리하고 변경 내용을 그룹화한 다음 저장소에 단위로 다시 쓸 수 있도록 작업 단위 및 리포지토리 패턴의 조합을 나타냅니다. DbContext는 개념적으로 ObjectContext와 유사합니다.

GetType()

DbContext instance 데이터베이스에서 쿼리하고 변경 내용을 그룹화한 다음 저장소에 단위로 다시 쓸 수 있도록 작업 단위 및 리포지토리 패턴의 조합을 나타냅니다. DbContext는 개념적으로 ObjectContext와 유사합니다.

GetValidationErrors()

추적된 엔터티의 유효성을 검사하고 유효성 검사 결과를 포함하는 컬렉션 DbEntityValidationResult 을 반환합니다.

OnModelCreating(DbModelBuilder)

이 메서드는 파생 컨텍스트의 모델이 초기화되었을 때 모델이 잠기고 컨텍스트를 초기화하는 데 사용되기 전에 호출됩니다. 이 메서드의 기본 구현은 아무 작업도 수행하지 않지만 모델이 잠기기 전에 모델을 더 세부적으로 제어할 수 있도록 이 메서드의 기본 구현을 파생 클래스에서 재정의할 수 있습니다.

SaveChanges()

이 컨텍스트에서 기본 데이터베이스에 수행된 모든 변경 내용을 저장합니다.

SaveChangesAsync()

이 컨텍스트에서 수행한 모든 변경 내용을 기본 데이터베이스에 비동기적으로 저장합니다.

SaveChangesAsync(CancellationToken)

이 컨텍스트에서 수행한 모든 변경 내용을 기본 데이터베이스에 비동기적으로 저장합니다.

Set(Type)

컨텍스트 및 기본 저장소에서 지정된 형식의 엔터티에 액세스하기 위한 제네릭 DbSet 이 아닌 instance 반환합니다.

Set<TEntity>()

DbSet<TEntity> 컨텍스트 및 기본 저장소에서 지정된 형식의 엔터티에 액세스하기 위한 instance 반환합니다.

ShouldValidateEntity(DbEntityEntry)

사용자가 추가되고 수정된 엔터티의 유효성만 검사하는 기본 동작을 재정의할 수 있도록 하는 확장 지점입니다.

ToString()

DbContext instance 데이터베이스에서 쿼리하고 변경 내용을 그룹화한 다음 저장소에 단위로 다시 쓸 수 있도록 작업 단위 및 리포지토리 패턴의 조합을 나타냅니다. DbContext는 개념적으로 ObjectContext와 유사합니다.

ValidateEntity(DbEntityEntry, IDictionary<Object,Object>)

사용자가 엔터티의 유효성 검사를 사용자 지정하거나 유효성 검사 결과를 필터링하여 제외시킬 수 있도록 하는 확장 지점입니다. GetValidationErrors()에 의해 호출됩니다.

명시적 인터페이스 구현

IObjectContextAdapter.ObjectContext

이 컨텍스트의 기반이 되는 Entity Framework ObjectContext를 반환합니다.

적용 대상