다음을 통해 공유


Entity Framework Core SQL Server 공급자와 관련된 열 기능

이 페이지에서는 SQL Server 공급자와 관련된 열 구성 옵션에 대해 자세히 설명합니다.

유니코드 및 UTF-8

SQL Server 2019에는 특수 UTF-8 데이터 정렬로 구성하여 UTF-8 데이터를 charvarchar 열에 저장할 수 있는 UTF-8 지원이 도입되었습니다. EF Core 7.0은 UTF-8 열에 매핑하기 위한 모든 지원을 도입했으며, 몇 가지 추가 단계를 통해 이전 EF 버전에서도 사용할 수 있습니다.

EF Core 7.0에는 UTF-8 열에 대한 일류 지원이 포함되어 있습니다. 구성하려면 열의 형식을 char 또는 varchar로 구성하고 (_UTF8로 끝나는) UTF-8 데이터 정렬을 지정하고 열이 유니코드가 되도록 지정합니다.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .Property(b => b.Name)
        .HasColumnType("varchar(max)")
        .UseCollation("LATIN1_GENERAL_100_CI_AS_SC_UTF8")
        .IsUnicode();
}

스파스 열

스파스 열은 null 값에 최적화된 스토리지가 있는 일반 열로, null이 아닌 값을 검색하는 데 더 많은 오버헤드가 발생하는 비용으로 null 값에 대한 공간 요구 사항을 줄입니다.

예를 들어 TPH(테이블별 계층 구조) 전략을 통해 매핑된 형식 계층 구조를 고려합니다. TPH에서 단일 데이터베이스 테이블은 모든 형식을 계층 구조에 보관하는 데 사용됩니다. 즉, 테이블은 전체 계층 구조의 각 속성과 모든 속성에 대한 열을 포함해야 하며, 드문 형식에 속하는 열의 경우 대부분의 행에는 해당 열에 대한 null 값이 포함됩니다. 이러한 경우 공간 요구 사항을 줄이기 위해 열을 스파스로 구성하는 것이 합리적일 수 있습니다. 열 스파스를 만들 것인지 여부는 사용자가 결정해야 하며 테이블의 실제 데이터에 대한 기대에 따라 달라집니다.

Fluent API를 통해 열을 스파스로 만들 수 있습니다.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<RareBlog>()
        .Property(b => b.RareProperty)
        .IsSparse();
}

스파스 열에 대한 자세한 내용은 SQL Server 문서를 참조하세요.