>백엔드 개발 >C++ >Entity Framework Core에서 사용자 지정 데이터 형식을 사용하여 원시 SQL 쿼리를 실행하는 방법은 무엇입니까?

Entity Framework Core에서 사용자 지정 데이터 형식을 사용하여 원시 SQL 쿼리를 실행하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-27 01:16:09581검색

How to Execute Raw SQL Queries with Custom Data Types in Entity Framework Core?

Entity Framework Core에서 사용자 정의 데이터 유형을 사용하여 원시 SQL 쿼리 실행

Entity Framework Core의 발전으로 인해 특히 사용자 지정 데이터 유형과 관련하여 원시 SQL 쿼리가 처리되는 방식이 변경되었습니다. 최신 버전에서는 dbData.Database.SqlQuery<somemodel> 메서드를 더 이상 사용할 수 없습니다. 이 가이드에서는 다양한 EF Core 버전에서 사용자 지정 유형을 반환하는 원시 SQL 쿼리를 실행하는 방법을 자세히 설명합니다.

EF Core 8 이상

EF Core 8 및 후속 릴리스에서는 SqlQuery 메서드가 크게 향상되어 임의 유형의 반환을 직접 지원합니다. 이렇게 하면 프로세스가 상당히 단순화됩니다.

EF Core 3.0 이상

키가 없는 엔터티 유형 활용:

EF Core 3.0 이상 내 원시 SQL 쿼리에서 사용자 지정 데이터 유형을 처리하기 위해 권장되는 접근 방식은 키가 없는 엔터티 유형을 사용하는 것입니다. 이는 [Keyless] 속성이나 .HasNoKey() 구성 방법을 사용하여 수행됩니다.

<code class="language-csharp">[Keyless]
public class SomeModel
{
    // Properties
}</code>

FromSqlRaw 또는 FromSql을 사용하여 쿼리를 실행하세요.

<code class="language-csharp">var result = context.SomeModels.FromSqlRaw("SQL_SCRIPT").ToList();
var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>

EF 코어 2.1(RC1)

DbQuery 활용:

EF Core 2.1 RC1에서는 DbQuery<T> 내에 DbContext 속성을 ​​정의하고 FromSql 메서드를 사용합니다.

<code class="language-csharp">public DbSet<SomeModel> SomeModels { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<SomeModel>().HasNoKey();
}

// Execute query
var result = context.SomeModels.FromSql("SQL_SCRIPT").ToList();</code>

EF 코어 2.0

대체 전략:

EF Core 2.0에는 해결 방법이 필요합니다.

  • 사용자 정의 DTO: 전용 DTO(데이터 전송 개체)를 만들어 쿼리 결과를 매핑합니다. 이를 위해서는 데이터를 수동으로 매핑해야 합니다.
  • SqlCommand: SqlCommand를 직접 사용하세요. 이는 EF Core의 기능을 우회하여 이점을 줄입니다.

위 내용은 Entity Framework Core에서 사용자 지정 데이터 형식을 사용하여 원시 SQL 쿼리를 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.