EF核心:避免使用相關實體的null引用異常
>>如果該關係未正確加載,則直接訪問實體框架核心(EF Core)查詢中的相關實體可能會導致錯誤。當您嘗試在EF Core檢索相關數據之前嘗試訪問導航屬性時,通常會發生這種情況。
NullReferenceException
例如,如果a
具有Mutant
導航屬性,則訪問OriginalCode
>可能會返回mutant.OriginalCode
,除非您明確加載了相關的OriginalCode
最直接的方法是急切的加載。該預加載在初始查詢期間相關的數據,以防止零值。 在我們的示例中:
這確保了
<code class="language-csharp">var mutants = db.Mutants.Include(m => m.OriginalCode).ToList();</code>
m.OriginalCode
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>。
Mutant
mutants
控制數據加載
有時,您可能需要避免自動加載相關的實體,尤其是在處理大型數據集或性能問題時。 有兩個選項可用:
>
單獨的dbcontext:
DbContext
>
AsNoTracking()
<code class="language-csharp">var mutants = db.Mutants.AsNoTracking().ToList();</code>
虛擬屬性:>將所有導航屬性聲明為
>。>
virtual
Microsoft.EntityFrameworkCore.Proxies
EF Core還提供了一種無代理的懶惰加載方法;請諮詢官方文件以獲取詳細信息。 請記住,懶惰的負載會影響性能,因此請明智地使用它。 以上是EF核心:訪問相關實體時如何處理無效關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!