> 백엔드 개발 > C++ > EF Core 탐색 속성이 명시적으로 로드될 때까지 null인 이유는 무엇이며 이를 일관되게 채울 수 있는 방법은 무엇입니까?

EF Core 탐색 속성이 명시적으로 로드될 때까지 null인 이유는 무엇이며 이를 일관되게 채울 수 있는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-24 22:25:09
원래의
794명이 탐색했습니다.

ef Core는 빈 값 문제와 내비게이션 속성의 솔루션을 지연 시켰습니다. 문제 설명 Why are EF Core navigation properties null until explicitly loaded, and how can I consistently populate them?

다음 모델을 고려하십시오

dbcontext의

메소드에서 관계를 정의합니다.

돌연변이 체를 쿼리 할 때, 속성은 원래 비어있었습니다. 그러나 돌연변이 체를 쿼리하기 전에 를 확인하면 속성이 채워집니다. 원인의 분석

EF 핵심 문서의 "로드 관련 데이터"는이 동작을 설명했습니다.

엔티티 프레임 워크 코어는 지연로드를 지원하지 않으므로 일반적으로 탐색 속성이 사전로드되거나 명시 적으로로드를 통해로드하기 전에 비어 있습니다.

public class Mutant
{
    public long Id { get; set; }
    public long OriginalCodeId { get; set; }
    public virtual OriginalCode OriginalCode { get; set; }
}

public class OriginalCode
{
    public long Id { get; set; }
    public virtual List<Mutant> Mutants { get; set; }
}
로그인 후 복사
< "> 그러나"프리로드 "부분에는 다음이 포함되어 있습니다.

<示 示> <<> 팁 OnModelCreating 엔티티 프레임 워크 코어는 컨텍스트 인스턴스의 다른 엔티티에로드 된 내비게이션 속성을 자동으로 복구합니다. 따라서 내비게이션 속성을 포함하는 데이터를 명시하지 않더라도 일부 또는 모든 관련 엔티티가 이전에로드 된 경우 속성이 여전히 채워질 수 있습니다.

modelBuilder.Entity<Mutant>()
    .HasOne(m => m.OriginalCode)
    .WithMany(oc => oc.Mutants)
    .HasForeignKey(m => m.OriginalCodeId)
    .OnDelete(DeleteBehavior.Restrict);
로그인 후 복사
솔루션

OriginalCode 첫 번째 문제 해결 (내비게이션 속성이 비어 있음) : OriginalCode 프리 로딩과 같은 사용 가능한로드 관련 데이터를 사용하는 방법 : OriginalCode 두 번째 문제를 해결합니다 (관련 엔터티가 내비게이션 속성을 채우게 한 관련 엔티티가 사전로드 됨) :

이 동작은"설계된 "상태이며 제어 할 수 없습니다. 이것을 피하기 위해 :

각 쿼리에 새 DBContext 인스턴스를 사용하십시오. 추적 쿼리없이 사용하십시오 ().

ef Core v2.1 및 더 높은 버전 업데이트 :

Core v2.1 지원 지연 로딩을 지원하지만 기본적으로 활성화되지는 않습니다. 그것을 가능하게하려면 :

모든 내비게이션 속성을 로 표시하십시오.
> nuget 백을 설치하십시오.

사용

지연 하중 활성화.

위의 방법을 통해 EF Core의 탐색 속성을 효과적으로 관리하여로드하고 공석 문제를 피하며 코드의 예측 가능성을 향상시킬 수 있습니다.

위 내용은 EF Core 탐색 속성이 명시적으로 로드될 때까지 null인 이유는 무엇이며 이를 일관되게 채울 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿