ef 코어 : 관련 엔티티와의 널 참조 예외를 피하십시오
Entity Framework Core (EF Core) 쿼리에서 관련 엔티티에 직접 액세스하면 관계가 올바르게로드되지 않으면 오류가 발생할 수 있습니다. EF Core가 관련 데이터를 검색하기 전에 내비게이션 속성에 액세스하려고 할 때 종종 발생합니다.
예를 들어, 엔티티가 내비게이션 속성을 갖는 경우 에 액세스하는 것은 관련 엔티티를 명시 적으로로드하지 않으면
에 액세스 할 수 있습니다. 기본적으로 EF Core는 게으른 하중을 수행하지 않습니다
솔루션 : 열렬한 하중
가장 간단한 접근 방식은 열망하는 로딩입니다. 이 초기 쿼리 중에 관련 데이터를 예압하여 널 값을 방지합니다. 이 예에서 :
NullReferenceException
이것은 목록에
가 각각
에 채워 지도록 보장합니다.
Mutant
데이터로드 제어 OriginalCode
때때로, 특히 대규모 데이터 세트 나 성능 문제를 처리 할 때 관련 엔티티를 자동으로로드하지 않을 수도 있습니다. 두 가지 옵션을 사용할 수 있습니다 :
mutant.OriginalCode
null
OriginalCode
별도 DBContext :
응용 프로그램의 다른 부분에서 잠재적 부작용을 피하기 위해 쿼리에 대해서만 별도의
인스턴스를 사용하십시오.
추적 쿼리 없음 :
사용 ef 코어가 엔티티를 추적하는 것을 방지하고 성능 향상 :
<code class="language-csharp">var mutants = db.Mutants.Include(m => m.OriginalCode).ToList();</code>
로그인 후 복사
m.OriginalCode
Mutant
게으른 하중 (ef core 2.1 이상) mutants
ef Core 2.1 이상 버전은 게으른 하중을 지원합니다. 그것을 가능하게하려면 :
가상 속성 : 모든 내비게이션 속성을 로 선언합니다
Proxies 패키지 : Nuget 패키지를 설치하십시오
프록시 활성화 : 를 구성 할 때 호출
ef Core는 또한 대리자가없는 게으른 하중 접근법을 제공합니다. 자세한 내용은 공식 문서를 참조하십시오. 게으른 하중은 성능에 영향을 줄 수 있으므로 신중하게 사용하십시오.
위 내용은 EF Core : 관련 엔티티에 액세스 할 때 무효 관계를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!