Code Inspection: Usage of navigational property can return incomplete data
This inspection reports situations where a query is performed over a set of entities (for example, with the
DbSet<T>.AsAsyncEnumerable() method), and related entities are accessed within the query without being eagerly loaded or explicitly included in the query.
When this happens, the related entities may not be loaded into memory, leading to incomplete or missing data for those entities. This can result in unexpected behavior or errors further down the line.
To avoid this problem, you can either eagerly load related entities using the
Include() method or enable lazy loading, so that related entities are loaded on-demand when they are accessed.
In the above example, the code is using
AsAsyncEnumerable() to asynchronously iterate over the
DbSet, but it is not including any eager loading of the
Accounts navigation property of each
Since the iteration is performed asynchronously, the context may be disposed or modified before the nested
foreach loop can be executed, causing the
Accounts collection to be incomplete or even empty for some
To fix the issue, we use the
Include() method to eagerly load the
Accounts navigation property for each