엔티티 프레임워크 면접에서 가장 많이 나오는 질문 50가지와 답변 (2026년 기준)

Entity Framework 관련 주요 면접 질문 및 답변

Entity Framework 면접을 준비한다는 것은 실제 역량을 파악하는 데 도움이 되는 질문들을 예상하는 것을 의미합니다. Entity Framework 면접 질문은 사고력, 성과 인식, 그리고 지원자가 개념을 실제 업무에 적용하는 방식을 보여줍니다.

Entity Framework를 숙달하면 데이터 기반 플랫폼부터 클라우드 서비스에 이르기까지 현대 개발 전반에 걸쳐 다양한 직무 기회를 얻을 수 있습니다. 실무 경험은 분석 능력을 향상시키고 기술적 깊이를 강화하며 팀을 지원하는 데 도움이 됩니다. 채용 담당자는 실무 문제 해결 능력, 확장 가능한 설계, 후배 멘토링, 그리고 신입 졸업생을 위한 성장 경로를 높이 평가합니다.
자세히보기 ...

👉 무료 PDF 다운로드: 엔티티 프레임워크 면접 질문 및 답변

Entity Framework 관련 주요 면접 질문 및 답변

1) 엔티티 프레임워크란 무엇이며, 왜 사용되는가?

엔터티 프레임워크(EF)는 Microsoft's ORM(객체 관계형 맵)ping.NET용 프레임워크 개발자가 원시 SQL 대신 강력한 형식의 .NET 객체로 데이터를 다룰 수 있도록 하여 데이터베이스 상호 작용을 간소화합니다.이 복근tracEF(Entity Framework)는 개발자가 익숙한 C# 구문을 사용하여 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 수행할 수 있도록 지원하며, 프레임워크는 이러한 작업을 최적화된 SQL 쿼리로 변환하는 작업을 내부적으로 처리합니다. EF는 반복적인 데이터 접근 코드를 줄이고 유지 관리성을 향상시키며 컴파일 타임 형식 안전성을 강화하는 데 도움을 줍니다.

예를 들어 SQL 쿼리를 작성하는 대신 다음과 같이 사용할 수 있습니다.

var customers = context.Customers.Where(c => c.IsActive).ToList();

EF는 이 LINQ 쿼리를 SQL로 변환하고 데이터베이스에서 실행한 다음 결과를 객체로 반환합니다.


2) 차이점을 설명해보세요. Code 첫째, 데이터베이스 우선 접근 방식, 둘째, 모델 우선 접근 방식입니다.

Entity Framework는 세 가지 주요 개발 접근 방식을 지원합니다.

접근 언제 사용 하는가? 무슨 일이야
Code 이름 새로운 프로젝트 또는 도메인 중심 설계 엔티티 클래스를 정의하면 EF가 코드로부터 데이터베이스 스키마를 생성합니다.
데이터베이스 우선 기존 데이터베이스 EF는 기존 스키마로부터 엔티티 클래스와 컨텍스트를 생성합니다.
모델 우선 시각적인 디자인을 선호할 때 시각적 디자이너(엔티티 디자이너)에서 모델을 설계하면 EF가 클래스와 데이터베이스를 모두 생성합니다.

각 접근 방식은 서로 다른 시나리오에 적합합니다. Code 이름 애자일 개발에서 널리 사용됩니다. 데이터베이스 우선 기존 데이터베이스와 함께 사용하는 것이 좋습니다. 모델 우선 시각적 모델링이 중요한 경우에 적합합니다.


3) DbContext란 무엇이며 EF에서 어떤 역할을 합니까?

DbContext 는 을 관리하는 주요 클래스입니다. 데이터베이스와의 세션, tracks 엔티티 변경 사항을 감지하고, 데이터베이스에 데이터를 저장하는 작업을 조정합니다. 이는 C# 애플리케이션과 데이터베이스를 연결하는 다리 역할을 합니다. DbContext당신이 정의합니다 DbSet<TEntity> 속성은 엔티티 모음을 나타내며 데이터베이스의 테이블에 매핑됩니다.

예:

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }
}

여기 Products CRUD 작업을 수행하기 위한 컬렉션 역할을 합니다. EF는 이 컨텍스트를 사용하여 track 객체 상태 그리고 SQL 명령을 생성합니다. SaveChanges().


4) Entity Framework에서 마이그레이션이란 무엇이며 어떻게 사용됩니까?

이주 메커니즘입니다 track를 적용하고 적용하세요. 스키마 변경 모델이 발전함에 따라 마이그레이션을 통해 SQL 스크립트를 수동으로 수정하지 않고도 데이터베이스를 동기화 상태로 유지할 수 있습니다. Code 먼저 다음과 같은 명령어를 사용합니다.

Add-Migration InitialCreate
Update-Database

이 기능은 스키마 변경 사항을 정의하는 마이그레이션 클래스를 생성하고 이를 데이터베이스에 적용합니다. 마이그레이션을 통해 데이터베이스 스키마의 버전 관리가 가능해지고 협업 개발이 용이해집니다.


5) 지연 로딩, 즉시 로딩 및 명시적 로딩에 대해 설명하십시오.

EF에서 관련 데이터를 효율적으로 로드하는 것은 매우 중요합니다. 다음은 비교표입니다.

전략 실행될 때 전형적인 사용
게으른로드 첫 접속 시 관련 데이터가 로드됩니다. 관련 데이터가 항상 필요하지 않을 때 사용하십시오.
열정적인 로딩 관련 데이터는 사전에 로드됩니다. .Include() 관련 데이터가 필요할 때 사용하세요.
명시 적 로딩 쿼리 후 수동으로 로드됨 관련 데이터가 로드되는 정확한 시점을 제어할 수 있습니다.

예 :

var orders = context.Orders.Include(o => o.Customer).ToList(); // Eager

지연 로딩은 초기 쿼리 횟수를 줄이는 데 도움이 되지만, 다음과 같은 문제를 야기할 수 있습니다. N+1개의 질의 문제 주의해서 사용하지 않으면.


6) 변화란 무엇인가 tracEntity Framework에서 왕은 누구일까요?

변화 tracking은 EF의 내부 메커니즘입니다. 엔티티 상태 변화를 모니터링합니다. 쿼리가 실행된 후. 엔티티가 검색될 때 DbContext, 그것은 trac속성 변경 사항은 모두 기록되며, SaveChanges() 호출되면 EF는 적절한 SQL을 생성합니다. INSERT, UPDATE및 DELETE 문장. 읽기 전용 시나리오의 경우 trac왕은 불필요하다. AsNoTracking() 변경 기능을 비활성화하여 성능을 향상시킵니다. trac왕.


7) Entity Framework는 동시성 충돌을 어떻게 처리합니까?

동시성 제어는 여러 사용자가 동일한 데이터를 업데이트할 때 의도치 않게 서로의 변경 사항을 덮어쓰지 않도록 보장합니다. EF는 이를 사용합니다. 낙관적 동시성 기본적으로 그렇습니다. 일반적인 접근 방식은 추가하는 것입니다. 동시성 토큰 (같은 RowVersion 타임스탬프). EF는 이 토큰을 확인합니다. SaveChanges()그리고 데이터베이스 버전과 다르면, DbUpdateConcurrencyException 이 예외는 충돌을 나타냅니다. 개발자는 이 예외를 처리하여 재시도하거나 데이터 차이를 해결할 수 있습니다.


8) EF에서 탐색 속성이란 무엇입니까?

탐색 속성은 엔티티 간의 관계를 정의합니다. 이를 통해 EF는 다음과 같은 작업을 수행할 수 있습니다. 협회 탐색 (예: 일대다) 수동 조인 없이:

public class Order
{
    public int Id { get; set; }
    public Customer Customer { get; set; }
}

여기 Customer 탐색 속성 연결입니다 Order 관련된 것에 CustomerEF는 이러한 속성을 사용하여 쿼리 중에 관계 및 조인을 자동으로 구축합니다. 탐색 속성은 함께 작동합니다. 외래 키 관계를 모델링하기 위해.


9) AsNo의 목적은 무엇입니까?Tracking()?

AsNoTracking() 변경을 비활성화합니다 trac질문에 대한 답변으로, 이는 다음과 같은 이점이 있습니다. 읽기 전용 검색된 엔티티를 업데이트할 의도가 없는 작업에 사용합니다. 이렇게 하면 메모리 사용량이 줄어들어 성능이 향상됩니다. trac오버헤드가 적습니다. 특히 데이터를 수정하지 않고 대규모 데이터 세트를 가져올 때 유용합니다.


10) 컴파일된 쿼리란 무엇이며 언제 사용해야 합니까?

컴파일된 쿼리는 성능 최적화 기법입니다. LINQ 쿼리가 실행될 때마다 EF는 일반적으로 매번 SQL로 변환합니다. 컴파일된 쿼리를 사용하면 이 변환이 한 번만 수행되고 결과 델리게이트가 재사용되므로 자주 실행되거나 복잡한 쿼리의 오버헤드가 줄어듭니다. 컴파일된 쿼리는 다음과 같은 경우에 사용하세요. 교통량이 많은 서로 다른 매개변수를 사용하여 동일한 쿼리가 반복적으로 실행되는 시나리오.


11) Entity Framework에서 엔티티 상태란 무엇이며, SaveChanges() 메서드에 어떤 영향을 미칩니까?

엔터티 프레임워크 trac각 엔티티의 ks 상태 어떤 데이터베이스 작업을 수행할지 결정하기 위해 SaveChanges()주요 엔티티 상태는 다음과 같습니다.

주 정부 기술설명 Operation 트리거됨
추가 새로운 엔티티가 삽입됩니다. INSERT
수정 기존 엔티티가 업데이트되었습니다. UPDATE
삭제 제거 대상으로 표시된 개체 DELETE
변하지 않은 변경 사항이 감지되지 않았습니다. 없음
분리 된 아니 trac문맥에 의해 결정됨 없음

전화 할 때 SaveChanges()EF는 엔티티 상태를 검사하고 해당 SQL 명령을 실행합니다. 예를 들어, 새 엔티티가 추가되면 DbSet 표시됩니다 추가, 결과 INSERT 질문.

예:

context.Entry(product).State = EntityState.Modified;
context.SaveChanges();

이는 해당 엔티티에 대한 데이터베이스 레코드를 명시적으로 업데이트합니다.

상태 이해하기 데이터 동기화 및 성능에 대한 더 나은 제어 기능을 제공합니다.


12) Entity Framework 사용의 장점과 단점은 무엇입니까?

Entity Framework는 강력한 이점을 제공하지만, 사용 사례에 따라 몇 가지 단점도 존재합니다.

장점 단점
LINQ와 객체 모델을 통해 데이터 접근을 간소화합니다. 순수 ADO.NET에 비해 성능 오버헤드가 발생합니다.
반복적인 SQL 코드 작성을 줄여줍니다. 복잡한 쿼리는 비효율적인 SQL을 생성할 수 있습니다.
다양한 데이터베이스 공급자를 지원합니다. 생성된 SQL 문을 디버깅하기가 더 어려워집니다.
강력한 타입 검사를 통해 컴파일 시 안전성을 향상시킵니다. 대규모 팀에서는 이주 관련 갈등이 발생할 수 있습니다.
신속한 프로토타입 제작을 가능하게 합니다ping 과 Code 첫번째로 올려주세요. Less 세밀하게 조정된 쿼리에 대한 제어 권한.

최대 성능이 요구되는 대규모 시스템의 경우 개발자는 여전히 여러 기술을 혼합하여 사용할 수 있습니다. EF를 사용한 원시 SQL 최적화를 위해.


13) Entity Framework는 일대일, 일대다, 다대다 관계 등을 어떻게 처리하나요?

Entity Framework는 다음을 통해 관계를 관리합니다. 탐색 속성 외국 키 연관 관계.

관계의 유형은 다음과 같습니다.

관계 유형 기술설명 예시
1-1 각 엔티티 인스턴스는 하나의 관련 엔티티를 가집니다. User ↔ UserProfile
일대 다 하나의 개체가 여러 다른 개체와 관련됩니다. Customer → Orders
다 대다 여러 개체가 서로 관련되어 있습니다. Student ↔ Course

예 일대 다 관계:

public class Customer
{
    public int CustomerId { get; set; }
    public ICollection<Order> Orders { get; set; }
}

EF는 외래 키와 핸들을 자동으로 생성합니다. 계단식 삭제 규칙 구성에 따라 다릅니다.

VOUS pouvez의 aussi 사용 유창한 API 보다 명확한 관계도를 보려면ping.


14) LINQ to Entities와 LINQ to SQL의 차이점은 무엇입니까?

제품 특장점 LINQ to 엔터티 LINQ에서 SQL로
지원되는 데이터베이스 다중(SQL Server, Oracle, MySQL등) SQL Server 전용
기본 프레임워크 엔터티 프레임워크 ADO.NET
모델 개념적 실체 모델 데이터베이스 테이블만 해당
지도ping 복잡한 지도ping (유전, 연관) 직접 테이블 맵ping
향후 지원 적극적으로 지원 추천하지 않습니다

LINQ to 엔터티 Entity Framework의 일부이며 더 다재다능한 반면 LINQ에서 SQL로 SQL Server 및 간단한 사용 사례로 제한됩니다.

따라서 엔터프라이즈급 개발에는 LINQ to Entities를 사용하는 것이 좋습니다.


15) ObjectContext와 DbContext의 차이점은 무엇입니까?

제품 특장점 개체 컨텍스트 DB 컨텍스트
뼈대 이전 EF 버전 EF 4.1 이상에서 간소화된 API
복잡성 더 자세한 가볍고 편리함
성능 속도는 약간 빠르지만 사용하기는 더 어렵습니다. 최소한의 오버헤드로 간소화됨
변화 Tracking 수동 구성이 필요합니다 Automatic trac왕
우선 사용 레거시 시스템 최신 EF/EF Core 프로젝트

DbContext 내부적으로 감싸다 ObjectContext 하지만 더 깔끔하고 직관적인 API를 제공합니다. 대부분의 최신 .NET 애플리케이션은 이를 사용해야 합니다. DbContext.


16) Entity Framework에서 엔티티의 생명주기를 설명하십시오.

개체의 생명주기는 그 개체를 설명합니다. 상태 전환 창조에서 지속까지:

  1. 창조 – 엔티티가 메모리에 인스턴스화됩니다(상태: 분리 된).
  2. 부착 – 컨텍스트에 추가됨 DbSet.Add() (상태: 추가).
  3. 가감 – 자동으로 감지된 변경 사항(상태: 수정).
  4. 고집 - SaveChanges() 호출됨 → SQL 명령이 실행되었습니다.
  5. 삭제 – 다음과 같이 표시된 개체 삭제 그리고 데이터베이스에서 삭제되었습니다.

이러한 라이프사이클을 이해하면 데이터 문제를 디버깅하고 EF 컨텍스트 관리를 최적화하는 데 도움이 됩니다.


17) Entity Framework에서 Fluent API는 어떤 용도로 사용되나요?

The 유창한 API 모델 관계, 제약 조건 및 맵을 프로그래밍 방식으로 구성하는 방법을 제공합니다.pings는 종종 다음과 같은 데 사용됩니다. OnModelCreating() 당신의 방법 DbContext.

이는 구성에 대한 세밀한 제어를 제공합니다. 데이터 주석 말로 표현할 수 없어요.

예:

modelBuilder.Entity<Customer>()
    .HasMany(c => c.Orders)
    .WithOne(o => o.Customer)
    .HasForeignKey(o => o.CustomerId);

Fluent API는 구성에 특히 강력한 기능을 제공합니다. 복합 키, 다대다 관계예산 및 캐스케이드 규칙.


18) Entity Framework에서 데이터 어노테이션이란 무엇인가요?

데이터 주석은 다음과 같습니다. 속성 스키마 동작을 정의하기 위해 모델 클래스 또는 속성에 직접 적용됩니다. Fluent API보다 간단하지만 유연성은 떨어집니다.

예:

public class Product
{
    [Key]
    public int ProductId { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }
}

어노테이션은 키, 문자열 길이, 필수 필드 및 관계를 정의합니다. 고급 경우에는 개발자가 일반적으로 이러한 어노테이션을 조합합니다. 데이터 주석 유창한 API.


19) 차이점은 무엇입니까? trac케드와 언tracEF Core에서 ked 엔티티란 무엇인가요?

타입 기술설명 적용 사례
Tracked 엔티티 모니터링 대상 DbContext 변경. 업데이트에 대한 기본 동작입니다.
Untracked 엔티티 모니터링되지 않음; 검색됨 .AsNoTracking(). 읽기 전용 작업에 이상적입니다.

Tracked 엔티티는 더 많은 메모리를 소비하지만 EF가 변경 사항을 자동으로 감지할 수 있도록 합니다.

Untracked 엔티티는 향상됩니다 성능 읽기 빈도는 높고 업데이트 빈도는 낮은 시나리오에서.


20) Entity Framework에서 원시 SQL 쿼리를 실행하는 방법은 무엇입니까?

Entity Framework는 사용자 지정 쿼리 또는 성능이 중요한 쿼리에 대해 원시 SQL을 실행할 수 있도록 합니다.

var result = context.Products
    .FromSqlRaw("SELECT * FROM Products WHERE Price > 100")
    .ToList();

쿼리 명령이 아닌 경우:

context.Database.ExecuteSqlRaw("DELETE FROM Products WHERE Discontinued = 1");

이 기능을 주의해서 사용하십시오. 그렇지 않으면 문제가 발생할 수 있습니다. SQL 인젝션 또한 데이터베이스에 구애받지 않는 유연성을 유지합니다.


21) Entity Framework와 Entity Framework Core의 차이점은 무엇입니까?

Entity Framework(EF)와 Entity Framework Core(EF Core)는 아키텍처, 기능 및 플랫폼 간 지원 측면에서 차이가 있습니다.

제품 특장점 엔티티 프레임워크 6(EF6) Entity Framework 코어
플랫폼 .NET 프레임워크만 해당 크로스 플랫폼(.NET 5/6/7)
아키텍처 ObjectContext를 기반으로 경량 및 모듈형
성능 일부 쿼리에서 속도가 느립니다. 최적화된 쿼리 생성
LINQ 지원 성숙했지만 한계가 있다 번역 및 비동기 기능 개선
데이터베이스 제공자 SQL 서버, Oracle 다수의 (MySQL, PostgreSQL, SQLite등)
기능 성숙한 방식(예: 지연 로딩) 최신 기능(예: 그림자 속성, 전역 필터)

EF Core는 다음과 같습니다. 현대적이고, 적극적으로 개발됨 이 버전은 유연성과 성능 덕분에 새로운 .NET 프로젝트에 권장되는 선택 사항입니다.


22) Entity Framework에서 트랜잭션은 어떻게 작동하나요?

Entity Framework에서의 트랜잭션은 다음을 보장합니다. 데이터 무결성 여러 작업이 동시에 성공하거나 실패해야 할 때 사용됩니다. 기본적으로 EF는 이러한 작업을 래핑합니다. SaveChanges() 거래 내역. 수동 제어용:

using (var transaction = context.Database.BeginTransaction())
{
    try
    {
        context.Customers.Add(new Customer());
        context.SaveChanges();

        context.Orders.Add(new Order());
        context.SaveChanges();

        transaction.Commit();
    }
    catch
    {
        transaction.Rollback();
    }
}

이렇게 하면 원자성이 보장됩니다. 즉, 어떤 명령이든 실패하면 모든 변경 사항이 되돌려집니다.

EF는 또한 다음과 통합됩니다. 시스템 거래 분산 트랜잭션 지원을 위해.


23) Entity Framework에서 TPH, TPT 및 TPC 상속 전략에 대해 설명하십시오.

Entity Framework는 세 가지 주요 상속 맵을 지원합니다.ping 클래스 계층 구조 모델링 전략.

전략 기술설명 예시 장점 단점
TPH(계층별 테이블) 모든 클래스는 하나의 테이블을 공유하며, 식별자 열은 유형을 식별합니다. EF 핵심 개념에서 흔히 볼 수 있는 것입니다. 간단하고 빠른 쿼리. 테이블이 커지고 데이터가 부족해질 수 있습니다.
TPT(유형별 테이블) 각 하위 클래스는 자체 테이블을 가지고 있습니다. 각 파생 클래스는 별도로 매핑됩니다. 정규화된 스키마. 계층 구조가 클수록 조인 속도가 느려집니다.
TPC(콘크리트 등급별 표) 각 클래스는 중복된 열을 가진 자체 테이블을 가지고 있습니다. 각 엔티티는 별도로 매핑됩니다. 고성능 읽기. 데이터 중복.

대부분의 개발자는 선호합니다 TPH 정규화 또는 성능상의 요구 사항이 달리 적용되지 않는 한, 단순성을 위해 그대로 사용합니다.


24) Entity Framework에서 성능 튜닝은 어떻게 처리하나요?

Entity Framework 성능을 최적화하려면 다음 단계를 따르세요.

  1. AsNoTracking() 읽기 전용 쿼리의 경우.
  2. 열정적인 부하 필요한 관련 엔티티만 포함 .Include().
  3. N+1 쿼리를 피하세요 투영법을 사용하거나 Select().
  4. 컴파일된 쿼리를 사용하세요 자주 실행되는 작업의 경우.
  5. 여러 삽입/업데이트 일괄 처리 과 AddRange() SaveChanges().
  6. 자동 변경 감지 기능을 비활성화합니다. 대량 작업의 경우: context.Configuration.AutoDetectChangesEnabled = false;
  7. 캐싱과 페이지네이션을 사용하세요 대용량 데이터 세트의 경우.

잘 조정된 EF 구현은 개발자 생산성을 유지하면서 ADO.NET에 버금가는 성능을 제공할 수 있습니다.


25) Entity Framework Core에서 섀도우 속성이란 무엇입니까?

A 그림자 속성 EF 모델에는 존재하지만 엔티티 클래스에는 존재하지 않습니다. EF는 변경 사항을 통해 이를 유지 관리합니다. tracker는 데이터베이스에 저장됩니다.

예:

modelBuilder.Entity<Order>()
    .Property<DateTime>("LastUpdated");

이를 통해 EF는 엔티티 클래스를 수정하지 않고도 추가 메타데이터(예: 타임스탬프, 감사 정보)를 저장할 수 있습니다.

다음 방법을 통해 섀도우 속성에 접근할 수 있습니다.

var value = context.Entry(order).Property("LastUpdated").CurrentValue;

섀도우 속성은 로깅 또는 감사 시나리오에 이상적입니다.


26) EF Core에서 값 변환기란 무엇입니까?

EF Core의 값 변환기는 데이터베이스에서 읽거나 쓸 때 속성 값을 변환할 수 있도록 합니다.

예를 들어, 열거형을 문자열로 저장하려면 다음과 같이 합니다.

modelBuilder.Entity<Employee>()
    .Property(e => e.Status)
    .HasConversion(
        v => v.ToString(),
        v => (EmployeeStatus)Enum.Parse(typeof(EmployeeStatus), v));

이를 통해 다음과 같은 사용자 지정 데이터 유형에 대한 유연성이 향상됩니다. enum, bool및 DateTimeOffset.

값 변환기는 다음과 같은 용도로도 사용됩니다. 암호화, 압축 또는 마스킹 민감한 데이터의


27) 글로벌 쿼리 필터란 무엇이며 어떻게 작동합니까?

전역 쿼리 필터를 사용하면 엔티티에 대한 모든 쿼리에 조건을 자동으로 적용할 수 있습니다.

이것은 특히 유용합니다. 소프트 삭제 or 다중 임대.

예:

modelBuilder.Entity<Employee>()
    .HasQueryFilter(e => !e.IsDeleted);

실행된 모든 쿼리 Employee 명시적으로 재정의하지 않는 한, 소프트 삭제된 레코드는 자동으로 제외됩니다.

전역 필터는 유지 관리 용이성과 데이터 보안을 향상시킵니다.


28) 유닛 테스트를 사용하여 Entity Framework 코드를 어떻게 테스트할 수 있습니까?

실제 데이터베이스를 사용하지 않고 EF 로직을 단위 테스트하려면 다음을 사용하세요. 메모리 내 데이터베이스 or 조롱:

  • 옵션 1: 인메모리 공급자
    var options = new DbContextOptionsBuilder<AppDbContext>()
        .UseInMemoryDatabase("TestDb")
        .Options;
    
  • 옵션 2: 모의 DbContext
    모조품 DbSet 다음과 같은 라이브러리를 사용합니다. MOQ 개별 테스트를 위해.

단위 테스트는 다음을 검증해야 합니다.

  • 쿼리 정확성 (LINQ 사용)
  • 데이터 일관성 유지 후 SaveChanges()
  • 리포지토리 로직

EF Core InMemory를 사용한 테스트는 속도를 보장하고 SQL Server에 대한 종속성을 방지합니다.


29) EF에서 리포지토리 및 작업 단위 패턴에 대해 설명하십시오.

이 두 가지 건축 패턴은 도움이 됩니다. ABStract 데이터 액세스 거래 일관성을 유지합니다.

무늬 목적 구현 예
저장소 각 엔티티에 대한 CRUD 작업을 캡슐화합니다. IRepository<T> 인터페이스 Add(), GetAll()등
작업 단위 하나의 거래 내에서 여러 저장소를 조정합니다. SaveChanges() 커밋 경계 역할을 합니다.

예:

public class UnitOfWork : IUnitOfWork
{
    private readonly AppDbContext _context;
    public void Commit() => _context.SaveChanges();
}

이러한 패턴은 개선됩니다 테스트 가능성, 코드 재사용예산 및 우려의 분리 대규모 기업용 애플리케이션에서.


30) 즉시 로딩과 프로젝션 로딩의 차이점은 무엇입니까?

아래 열정적인 로딩 프로젝션 로딩
목적 관련 데이터를 미리 로드합니다. 특정 필드 또는 속성만 로드합니다.
방법 .Include() .Select()
예시 context.Orders.Include(o => o.Customer) context.Orders.Select(o => new { o.Id, o.Customer.Name })
성능 전체 객체를 가져옵니다. 최소한의 데이터를 가져옵니다.
적용 사례 처리 과정에서 관련 엔티티가 필요한 경우 특정한 경량 데이터가 필요할 때

프로젝션 로딩은 성능 최적화 이는 필요한 열만 선택함으로써 메모리 오버헤드를 줄입니다.


31) Entity Framework Core에서 인터셉터란 무엇인가요?

EF Core의 인터셉터를 사용하면 개발자는 데이터베이스 작업(예: 실행, 삭제, 실행)을 가로채고 수정할 수 있습니다. 쿼리 실행, 명령 생성 및 연결 열기.

이들은 EF와 데이터베이스 공급자 사이에서 미들웨어 구성 요소 역할을 합니다.

예: 실행된 모든 SQL 명령을 기록합니다.

public class CommandInterceptor : DbCommandInterceptor
{
    public override void ReaderExecuting(
        DbCommand command,
        CommandEventData eventData,
        InterceptionResult<DbDataReader> result)
    {
        Console.WriteLine($"Executing SQL: {command.CommandText}");
        base.ReaderExecuting(command, eventData, result);
    }
}

등록은 거기서 하시면 됩니다. DbContextOptionsBuilder:

optionsBuilder.AddInterceptors(new CommandInterceptor());

이점:

  • 향상된 로깅
  • 보안(쿼리 유효성 검사)
  • 감사 및 성과 trac왕

32) EF Core는 비동기 작업을 어떻게 처리합니까?

Entity Framework Core는 완벽하게 지원합니다. 비동기 프로그래밍 다음과 같은 방법을 통해 SaveChangesAsync(), ToListAsync()예산 및 FirstOrDefaultAsync().

비동기 실행은 도움이 됩니다 확장성 향상 웹 애플리케이션에서 I/O 중심의 데이터베이스 작업을 기다리는 동안 스레드를 해제함으로써 효율성을 높일 수 있습니다.

예:

var customers = await context.Customers
    .Where(c => c.IsActive)
    .ToListAsync();

비동기 작업은 특히 처리량이 높은 환경에서 효과적입니다. ASP.NET Core API 또한 마이크로서비스를 사용하여 호출 차단을 줄이고 응답 시간을 개선합니다.


33) Entity Framework Core에서 연결 복원력이란 무엇입니까?

연결 복원력은 애플리케이션에 도움이 됩니다. 일시적인 데이터베이스 오류로부터 자동으로 복구합니다.네트워크 중단이나 SQL 시간 초과와 같은 문제.

다음과 같이 설정할 수 있습니다.

optionsBuilder.UseSqlServer(
    connectionString,
    options => options.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null)
);

여기서 EF는 실패한 작업을 최대 5회까지 지연 시간을 두고 재시도합니다.

이것은 특히 다음에서 유용합니다. 클라우드 호스팅 환경 처럼 Azure 일시적인 오류가 흔히 발생하는 SQL 환경입니다.


34) EF Core에서 소유 엔티티 유형이란 무엇입니까?

소유된 엔티티를 사용하면 모델링이 가능합니다. 값 객체 다른 개체의 생명주기에 전적으로 의존하는 것들.

그것들은 주인과 같은 테이블을 공유하며 독립적으로 존재할 수 없습니다.

예:

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}
public class Customer
{
    public int Id { get; set; }
    public Address Address { get; set; }
}

구성 :

modelBuilder.Entity<Customer>().OwnsOne(c => c.Address);

사용 사례 :

모델링 개념은 다음과 같습니다. 주소, 돈및 측량 자신만의 정체성이 없는 존재들.


35) Entity Framework Core에서 소프트 삭제를 어떻게 구현할 수 있습니까?

소프트 삭제는 레코드를 물리적으로 제거하는 대신 삭제된 것으로 표시하는 기능입니다.

이것들은 다음을 사용하여 구현됩니다. 부울 플래그 전역 쿼리 필터.

modelBuilder.Entity<Employee>()
    .HasQueryFilter(e => !e.IsDeleted);

삭제 작업에서:

employee.IsDeleted = true;
context.Update(employee);
context.SaveChanges();

장점:

  • 역사적 데이터 보존
  • 더 쉬운 회복

단점 :

  • 더 큰 데이터베이스 테이블
  • 신중한 필터링 로직이 필요합니다.

36) EF Core에서 컴파일된 모델이란 무엇이며, 왜 사용되는가?

EF Core 6+에서, 컴파일된 모델 EF 모델 메타데이터를 .NET 어셈블리로 사전 컴파일할 수 있도록 하여 시작 시간과 런타임 오버헤드를 줄입니다.

단계 :

  1. 다음 명령을 실행하십시오. dotnet ef dbcontext optimize
  2. EF는 애플리케이션이 런타임에 더 빠르게 로드할 수 있도록 미리 컴파일된 모델 파일을 생성합니다.

이점 : 특히 엔티티가 많은 대규모 애플리케이션에서 초기화 지연 시간을 30~40% 줄여줍니다.

사용 사례 : 고성능 마이크로서비스 및 서버리스 환경.


37) Entity Framework에서 캐싱을 어떻게 구현할 수 있습니까?

캐싱은 반복적인 데이터베이스 쿼리를 줄이는 데 도움이 됩니다. 캐싱에는 크게 두 가지 수준이 있습니다.

타입 기술설명 예시
1차 캐시 내장형, 당 DbContext 예 자동으로 관리됨
2차 캐시 컨텍스트 간에 공유되는 외부 캐시 다음과 같은 라이브러리를 사용하세요 EFCoreSecondLevelCacheInterceptor

2차 캐싱의 예시:

services.AddEFSecondLevelCache(options =>
{
    options.UseMemoryCacheProvider().DisableLogging(false);
});

이는 성능을 크게 향상시킵니다. 읽기 작업이 많은 애플리케이션 중복된 데이터베이스 접근을 방지함으로써.


38) EF Core는 동시성 토큰과 타임스탬프를 어떻게 관리합니까?

동시성 토큰은 방지합니다 상충되는 업데이트 다중 사용자 환경에서.

속성을 동시성 토큰으로 표시하려면 다음을 사용할 수 있습니다. [ConcurrencyCheck] or [Timestamp] 속성을 사용하지 않는 것입니다.

예:

public class Product
{
    public int Id { get; set; }

    [Timestamp]
    public byte[] RowVersion { get; set; }
}

업데이트가 발생하면 EF는 이 열을 포함합니다. WHERE 절.

값이 일치하지 않으면, DbUpdateConcurrencyException 던져진다 — 확실히 낙관적 동시성 제어.


39) 생성, 수정, 삭제 내역 감사를 어떻게 구현하나요? tracEF Core에서 (왕)?

감사 tracks 메타데이터(예: ...) 누가 생성, 수정 또는 삭제했습니까? 기록.

재정의할 수 있습니다 SaveChanges():

public override int SaveChanges()
{
    var entries = ChangeTracker.Entries()
        .Where(e => e.Entity is IAuditable && 
                   (e.State == EntityState.Added || e.State == EntityState.Modified));

    foreach (var entry in entries)
    {
        var auditable = (IAuditable)entry.Entity;
        auditable.LastModified = DateTime.UtcNow;
    }

    return base.SaveChanges();
}

인터페이스 :

public interface IAuditable
{
    DateTime Created { get; set; }
    DateTime LastModified { get; set; }
}

이 방법은 감사 로직을 중앙 집중화하여 다음을 보장합니다. 일관된 데이터 관리.


40) 엔터프라이즈 애플리케이션에서 Entity Framework를 사용하는 데 있어 가장 효과적인 방법은 무엇입니까?

카테고리 최고의 연습 혜택
성능 AsNoTracking() 읽기 전용 쿼리에 대한 예측 기능도 제공합니다. 간접비를 줄여줍니다.
디자인 리포지토리 및 단위 작업 패턴을 구현합니다. 유지보수성을 향상시킵니다.
보안 SQL 인젝션을 방지하려면 매개변수화된 쿼리를 사용하십시오. 데이터 보호.
확장성 연결 풀링과 비동기 메서드를 사용하세요. 높은 부하를 처리할 수 있습니다.
이주 버전 관리 기능을 사용하여 자동화된 마이그레이션을 활용하세요. 스키마 관리를 간소화합니다.
구성 연결 문자열과 비밀 키를 외부에 공개하십시오. 환경 격리가 더 잘 됩니다.
지원 단위 테스트에는 InMemory 공급자를 사용하십시오. 테스트 실행 속도가 더 빨라집니다.
로깅 성능 분석을 위해 EF 로깅을 활성화하세요. 디버깅이 더 쉬워집니다.

이러한 관행은 다음을 보장합니다 견고하고 확장 가능하며 유지 관리가 용이함 Entity Framework를 기반으로 구축된 애플리케이션.


41) Entity Framework에서 SQL 변환 효율을 높이기 위해 LINQ 쿼리를 최적화하는 방법은 무엇입니까?

Entity Framework는 LINQ 쿼리를 자동으로 SQL로 변환하지만, 비효율적인 패턴은 속도가 느리거나 중복되는 SQL을 생성할 수 있습니다. LINQ 최적화를 통해 ORM이 성능이 뛰어난 데이터베이스 쿼리를 생성할 수 있도록 합니다.

최적화 기술:

프로젝션을 사용하세요:

  1. 전체 엔티티를 선택하는 대신 필요한 열만 선택하십시오.
  2. var customers = context.Customers
        .Select(c => new { c.Id, c.Name })
        .ToList();
    
  3. 클라이언트 측 평가를 피하십시오:
    필터링이 항상 이루어지도록 하십시오. SQL에서메모리에 저장되지 않습니다. EF Core는 평가가 클라이언트 측에서 수행될 때 경고를 표시합니다.
  4. AsNoTracking() 읽기 전용 데이터의 경우.
  5. var orders = context.Orders.AsNoTracking().ToList();
  6. 컴파일된 쿼리를 활용하세요 반복적인 LINQ 연산을 위해.
  7. 불필요한 것을 피하십시오 .Include() 통화 — 필요한 경우에만 관련 데이터를 포함하세요.

예:

무능한:

context.Customers.ToList().Where(c => c.IsActive);

실력 있는:

context.Customers.Where(c => c.IsActive).ToList();

42) EF Core에서 초기 데이터를 시드하는 다양한 방법은 무엇입니까?

데이터 시딩은 데이터베이스에 필요한 정보를 제공합니다. 기본값 또는 참조 데이터 생성될 때.

접근 방식 1: ModelBuilder 사용

modelBuilder.Entity<Role>().HasData(
    new Role { Id = 1, Name = "Admin" },
    new Role { Id = 2, Name = "User" }
);

이것은 자동으로 데이터를 삽입합니다. Update-Database.

접근 방식 2: 사용자 지정 시드 방식

시작 시 코드를 수동으로 실행합니다.

context.Database.Migrate();
if (!context.Users.Any())
{
    context.Users.Add(new User { Name = "Admin" });
    context.SaveChanges();
}

접근 방식 3: SQL 스크립트

마이그레이션에서 원시 SQL을 사용하세요:

migrationBuilder.Sql("INSERT INTO Roles (Name) VALUES ('Admin')");

권장 사항 :
HasData() 정적 참조 데이터 및 동적 시작 데이터에 대한 프로그래밍 방식 시드 생성에 사용됩니다.


43) EF Core는 데이터베이스 공급자를 내부적으로 어떻게 관리합니까?

EF Core는 공급자 중립적즉, 별도의 경로를 통해 여러 데이터베이스 엔진을 대상으로 지정할 수 있습니다. 데이터베이스 공급자 패키지.

일반적인 제공업체:

Provider NuGet 묶음 데이터베이스
SQL 서버 Microsoft.EntityFrameworkCore.SqlServer MSSQL
SQLite Microsoft.EntityFrameworkCore.Sqlite 모바일/데스크탑
PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL
MySQL Pomelo.EntityFrameworkCore.MySql MySQL
코스모스 DB Microsoft.EntityFrameworkCore.Cosmos NoSQL

EF Core는 내부적으로 다음을 사용합니다. ABStrac이온층 용 :

  • 질의 번역
  • SQL 명령 생성
  • 데이터 유형 맵ping

각 공급자는 EF Core의 기본 abs를 상속받는 자체 클래스를 구현합니다.tractions (예: RelationalDatabaseProvider, QuerySqlGenerator).


44) "분할 쿼리"란 무엇이며, 언제 사용해야 합니까?

쿼리 분할로 인해 EF가 제대로 작동하지 않습니다. 크고 복잡한 조인 하나의 SQL 쿼리 대신 여러 개의 SQL 쿼리를 실행함으로써.

예:

var customers = context.Customers
    .Include(c => c.Orders)
    .AsSplitQuery()
    .ToList();

이것은 다음을 실행합니다:

  1. 쿼리 1 → 고객 가져오기
  2. 쿼리 2 → 해당 고객과 관련된 주문을 가져옵니다.

이점:

  • 대규모 데카르트 곱을 방지합니다.
  • 대규모 연관 데이터 세트에서 성능이 향상됩니다.

약점:

데이터베이스에 대한 여러 번의 왕복 통신.

쿼리 분할 대용량 관련 데이터를 즉시 로드할 때 메모리 문제가 발생할 수 있습니다.


45) EF에서 생성된 SQL 명령을 효과적으로 모니터링하는 방법은 무엇입니까?

SQL 모니터링은 느린 쿼리를 디버깅하고 ORM 동작을 최적화하는 데 도움이 됩니다.

SQL 로깅 방법:

  1. 콘솔 로깅
  2. optionsBuilder
        .UseSqlServer(conn)
        .LogTo(Console.WriteLine, LogLevel.Information);
    
  3. iLoggerFactory 통합
  4. var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
    optionsBuilder.UseLoggerFactory(loggerFactory);
    
  5. 인터셉터 구현 DbCommandInterceptor 명령과 타이밍을 캡처하기 위해.
  6. 프로파일 링 도구 다음과 같은 도구를 사용하세요.
    • 미니 프로파일러
    • SQL Server 프로파일 러
    • EFCorePowerTools

로깅은 다음과 같아야 합니다. 선택적으로 활성화됨 성능 저하를 방지하기 위해 실제 운영 환경에서 사용하지 않습니다.


46) 변화와 다른 점은 무엇인가요?Tracker.DetectChanges() 및 AutoDetectChangesEnabled?

제품 특장점 DetectChanges() AutoDetectChangesEnabled
타입 방법 부동산
목적 EF가 스캔하도록 강제합니다 trac엔티티를 식별하고 변경 사항을 감지합니다. 자동 변경 감지 기능을 활성화/비활성화합니다.
태만 Manual 참된
용법 성능 최적화를 명시적으로 요청합니다. 일괄 업데이트 시 비활성화

예:

context.ChangeTracker.AutoDetectChangesEnabled = false;
foreach (var item in list)
{
    context.Add(item);
}
context.SaveChanges();

반복문에서 자동 감지 기능을 비활성화하면 성능이 최대 1%까지 향상됩니다. 40% 대량 생산 작업에서.


47) EF Core에서 시간 테이블을 어떻게 사용하나요?

시간 테이블(SQL Server 2016에서 도입)을 사용하면 다음과 같은 작업을 수행할 수 있습니다. track개의 과거 데이터 자동으로.

단계 :

  1. 마이그레이션 시 시간적 지원을 활성화합니다.
  2. builder.Entity<Employee>()
        .ToTable("Employees", b => b.IsTemporal());
    
  3. 과거 데이터 조회:
  4. var history = context.Employees
        .TemporalAsOf(DateTime.UtcNow.AddDays(-7))
        .ToList();
    

장점:

  • 내장 데이터 기록 trac왕
  • 감사 및 규정 준수
  • 수동 작동 장치가 필요 없습니다.

EF Core 6 이상 버전은 완전한 시간 쿼리를 지원합니다.


48) EF Core는 컴파일된 쿼리와 사전 생성된 모델을 어떻게 함께 지원합니까?

컴파일된 쿼리와 컴파일된 모델은 두 가지입니다. 성능 특징 서로를 보완하는 것.

제품 특장점 목적
컴파일된 쿼리 캐시된 쿼리 번역 결과
컴파일된 모델 모델 메타데이터 사전 컴파일

컴파일된 쿼리의 예:

static readonly Func<AppDbContext, int, Customer> _getCustomerById =
    EF.CompileQuery((AppDbContext ctx, int id) =>
        ctx.Customers.FirstOrDefault(c => c.Id == id));

용법:

var customer = _getCustomerById(context, 5);

함께: 컴파일된 모델은 줄입니다 시작 비용컴파일된 쿼리는 감소합니다. 런타임 쿼리 오버헤드 —에 이상적입니다 고빈도 쿼리.


49) 마이크로서비스 아키텍처에서 EF를 사용할 때 흔히 발생하는 문제점은 무엇입니까?

흔한 실수:

  1. 서비스 간 공유되는 DbContext
    → 마이크로서비스 격리를 위반합니다.
    → 각 마이크로서비스는 자체적인 DbContext와 스키마를 가져야 합니다.
  2. 수다스러운 의사소통 (N+1 질의)
    → API 호출당 EF 쿼리 횟수를 최소화합니다.
  3. 과도한 열성적 로딩
    → DTO를 통해 필요한 데이터만 로드합니다.
  4. 중앙 집중식 이주
    → 각 서비스는 자체 마이그레이션을 독립적으로 관리해야 합니다.
  5. 거래 경계의 부재
    → 서비스 간 일관성이 요구되는 경우 분산 트랜잭션(아웃박스 패턴)을 사용하십시오.
  6. SQL 공급자와의 긴밀한 결합
    → 저장소 abs를 사용하세요trac데이터베이스 선택의 유연성을 유지하기 위한 조치입니다.

50) ASP.NET Core에서 의존성 주입은 DbContext와 어떻게 통합됩니까?

Entity Framework는 다음과 완벽하게 통합됩니다. ASP.NET Core의 내장 의존성 주입(DI) 기능 시스템.

설정 :

services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("Default")));

그다음 컨트롤러나 서비스에 주입하세요.

public class CustomerService
{
    private readonly AppDbContext _context;
    public CustomerService(AppDbContext context)
    {
        _context = context;
    }
}

수명:

수명 기술설명 추천
범위가 지정된 HTTP 요청당 하나의 컨텍스트 태만
과도 현상 매번 새로운 인스턴스가 생성됩니다. 백그라운드 작업
하나씩 일어나는 것 전 세계적으로 공유됨 (나사산 안전하지 않음) 피하세요

DI를 사용하면 다음과 같은 이점이 있습니다. 테스트 가능성, 라이프사이클 관리예산 및 자원 효율성 웹 및 백그라운드 프로세스 전반에 걸쳐.


🔍 실제 시나리오 및 전략적 대응 방안을 포함한 엔티티 프레임워크 관련 주요 면접 질문

1) Entity Framework란 무엇이며, 기업용 애플리케이션에서 사용되는 이유는 무엇입니까?

후보자에게 기대하는 것: 면접관은 지원자가 엔티티 프레임워크에 대해 기본적인 이해도를 갖추고 있는지, 그리고 실제 응용 분야에서 그 가치를 어떻게 인식하는지 평가하고자 합니다.

예시 답변: Entity Framework는 객체-관계형 맵입니다.ping .NET용 프레임워크로, 개발자가 원시 SQL 대신 .NET 객체를 사용하여 데이터베이스와 상호 작용할 수 있도록 합니다. 기업용 애플리케이션에서 생산성 향상, 반복적인 데이터 접근 코드 감소, 그리고 관심사 분리 유지를 위해 사용됩니다.


2) 차이점을 설명해 주시겠습니까? Code 첫째, 데이터베이스 우선 접근법, 둘째, 모델 우선 접근법 중 어떤 것이 더 좋을까요?

후보자에게 기대하는 것: 면접관은 지원자가 다양한 개발 워크플로에 대해 얼마나 알고 있으며, 각 워크플로를 언제 사용해야 하는지를 파악하고자 합니다.

예시 답변: Code 먼저 도메인 클래스부터 시작하여 코드로 데이터베이스를 생성하는 방식이 있습니다. 데이터베이스 우선 방식은 기존 데이터베이스에서 시작하여 엔티티 클래스를 생성합니다. 모델 우선 방식은 시각적 디자이너를 사용하여 모델을 정의한 후 코드와 데이터베이스를 모두 생성합니다. 각 접근 방식은 프로젝트 요구 사항과 기존 인프라를 기반으로 선택됩니다.


3) Entity Framework는 테이블 간의 관계를 어떻게 처리합니까?

후보자에게 기대하는 것: 면접관은 데이터 모델링과 관계형 맵에 대한 지원자의 이해도를 확인하고 있습니다.ping.

예시 답변: Entity Framework는 탐색 속성과 외래 키를 사용하여 관계를 처리합니다. 일대일, 일대다, 다대다 관계를 지원하며, 개발자는 조인이 아닌 객체 참조를 사용하여 관련 데이터를 탐색할 수 있습니다.


4) Entity Framework를 사용하여 데이터베이스 성능을 향상시킨 사례를 설명하십시오.

후보자에게 기대하는 것: 면접관은 최적화 능력을 보여주는 실질적인 사례를 듣고 싶어합니다.

예시 답변: 이전 직무에서 저는 불필요한 즉시 로딩을 줄이고 SELECT 문을 사용한 프로젝션 쿼리를 구현하여 성능을 개선했습니다. 이를 통해 데이터베이스에서 가져오는 데이터 양을 최소화하고 쿼리 실행 시간을 크게 단축했습니다.


5) Entity Framework에서 마이그레이션을 어떻게 관리하나요?

후보자에게 기대하는 것: 면접관은 스키마 변경 및 버전 관리에 대한 지원자의 경험을 평가하고 있습니다.

예시 답변: 마이그레이션은 내장된 마이그레이션 도구를 사용하여 관리됩니다. track 모델은 시간이 지남에 따라 변화합니다. 이전 직장에서는 환경 간 데이터베이스 무결성을 보장하기 위해 마이그레이션 스크립트를 정기적으로 생성하고 검토한 후 적용했습니다.


6) 지연 로딩이란 무엇이며, 언제 지연 로딩 사용을 피해야 할까요?

후보자에게 기대하는 것: 면접관은 데이터 로딩 전략과 성능 간의 절충점에 대한 지원자의 이해도를 평가하고자 합니다.

예시 답변: 지연 로딩은 데이터에 접근할 때 관련 데이터를 자동으로 로드합니다. 하지만 의도치 않은 데이터베이스 호출이 여러 번 발생하여 N+1 쿼리 문제로 이어질 수 있으므로 성능이 중요한 시나리오나 API에서는 사용을 피하는 것이 좋습니다.


7) Entity Framework에서 트랜잭션을 어떻게 처리하나요?

후보자에게 기대하는 것: 면접관은 데이터 일관성 및 오류 처리 관련 지원자의 지식을 평가하고 있습니다.

예시 답변: Entity Framework는 DbContext와 TransactionScope를 통해 트랜잭션을 지원합니다. 이전 직장에서는 여러 관련 데이터베이스 작업이 동시에 성공적으로 완료되거나 실패 시 롤백되도록 명시적인 트랜잭션을 사용했습니다.


8) Entity Framework에서 의존성 주입이 어떻게 사용되는지 설명하십시오.

후보자에게 기대하는 것: 면접관은 지원자가 최신 애플리케이션 아키텍처를 얼마나 잘 이해하고 있는지 확인하고 싶어합니다.

예시 답변: 의존성 주입은 DbContext를 서비스 또는 컨트롤러에 주입하는 데 사용됩니다. 이를 통해 비즈니스 로직을 변경하지 않고도 컨텍스트를 모킹하거나 교체할 수 있으므로 테스트 용이성과 유지 관리성이 향상됩니다.


9) Entity Framework를 사용하면서 겪었던 어려운 버그와 해결 방법을 설명하세요.

후보자에게 기대하는 것: 면접관은 문제 해결 능력과 디버깅 기술을 찾고 있습니다.

예시 답변: 이전 직장에서 저는 다음과 같은 문제에 직면했습니다. trac분리된 엔티티를 업데이트할 때 충돌이 발생했습니다. 엔티티 상태를 명시적으로 설정하고 각 엔티티의 인스턴스가 하나만 존재하도록 함으로써 해결했습니다. trac문맥에 따라 결정됩니다.


10) Entity Framework가 적합하지 않은 도구라고 판단하는 기준은 무엇인가요?

후보자에게 기대하는 것: 면접관은 당신의 판단력과 적절한 기술을 선택하는 능력을 파악하고자 합니다.

예시 답변: 애플리케이션에서 매우 높은 성능의 데이터 접근이나 복잡한 저장 프로시저 로직이 필요한 경우, 마이크로 ORM이나 순수 ADO.NET을 사용하면 더 많은 제어 권한과 효율성을 확보할 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.