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 Core:访问相关实体时如何处理空关系?的详细内容。更多信息请关注PHP中文网其他相关文章!