Entity Framework의 컨텍스트 클래스

해질녘·2022년 2월 8일
0

닷넷 (.NET)

목록 보기
8/12

Entity Framework의 컨텍스트 클래스

이 문서는 https://www.entityframeworktutorial.net/basics/context-class-in-entity-framework.aspx의 발췌 번역입니다.

Entity Framework의 컨텍스트 클래스 는 EF 6 및 EF Core 의 System.Data.Entity.DbContextDbContext 에서 파생된 클래스이다. 컨텍스트 클래스의 인스턴스는 일과 저장소 패턴의 단위를 대표한다. 하나의 데이터베이스 트랜젝션으로 여러가지 변화를 묶을 수 있다.

컨텍스트 클래스는 데이터베이스에 데이터를 저장하거나 쿼리할 때 쓰인다. 또한 도메인 클래스, 데이터베이스 매핑, 변경 트래킹 세팅, 캐싱, 트랜젝션 등등에도 쓰인다.

아래 SchoolContext 클래스가 컨텍스트 클래스 예시이다. DbContext를 상속받고 있다.

using System.Data.Entity;

public class SchoolContext : DbContext
{
    public SchoolContext()
    {

    }
    // Entities        
    public DbSet<Student> Students { get; set; }
    public DbSet<StudentAddress> StudentAddresses { get; set; }
    public DbSet<Grade> Grades { get; set; }
} 

엔티티 프레임워크에서 엔티티란?

엔티티 프레임워크에서 엔티티란 데이터베이스 테이블에 매핑되는 클래스이다. 이 클래스는 DbContext 클래스의 DbSet<TEntity> 타입 프로퍼티에 포함되어야 한다. EF API는 각 엔티티를 테이블로, 각 엔티티의 프로퍼티를 데이터베이스의 column으로 매핑한다.

예시: Student, Grade가 school 어플리케이션의 도메인 클래스이다.

public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public DateTime? DateOfBirth { get; set; }
    public byte[]  Photo { get; set; }
    public decimal Height { get; set; }
    public float Weight { get; set; }
        
    public Grade Grade { get; set; }
}

public class Grade
{
    public int GradeId { get; set; }
    public string GradeName { get; set; }
    public string Section { get; set; }

    public ICollection<Student> Students { get; set; }
}        

위 클래스는 컨텍스트 클래스(DbContext를 상속하는)의 DbSet<TEntity> 프로퍼티로 포함 되어야 엔티티가 된다.

엔티티의 종류 - Scalar properties and Navigation Properties

Scalar Property

원시 타입 프로퍼티를 스칼라 프로퍼티라고 한다. 각 스칼라 프로퍼니는 실제 데이터가 저장된 데이터베이스 테이블의 열 값으로 매핑된다.

네비게이션 프로퍼티는 다른 엔티티와의 관계를 나타낸다. 네비게이션 프로퍼티에도 2종류가 있다.

Reference Navigation Property

어떤 엔티티가 다른 엔티티 타입을 포함하고 있을 때, 이를 Reference Navigation Property 라 한다. 이는 단일 엔티티를 가리키고 It points to a single entity and represents multiplicity of one (1) in the entity relationships.

EF API가 네비게이션 프로퍼티에 대해 외래키 열을 생성한다. 이는 해당 데이터베이스의 다른 테이블의 PK를 가리키고 있다.

Collection Navigation Property

어떤 엔티티가 엔티티 타입의 제네릭 컬렉션 값을 포함할 때, 이를 collection navigation property라 한다. It represents multiplicity of many (*).

0개의 댓글