Skip to content

Commit 20bf0d9

Browse files
author
Nåkkve Kierulf
committed
fix: 🚑️ reorder query processing to apply sorting before includes for better EF Core compatibility
1 parent 903eda3 commit 20bf0d9

1 file changed

Lines changed: 13 additions & 12 deletions

File tree

JsonApiToolkit/Controllers/JsonApiController.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -160,26 +160,27 @@ string resourceType
160160
parameters.Include
161161
);
162162

163-
// Apply filtered includes if we have any include filters
164-
if (includeFilters.Count > 0)
165-
{
166-
queryable = queryable.ApplyFilteredIncludes(mappedIncludes, includeFilters);
167-
}
168-
else
169-
{
170-
// Regular includes without filters
171-
queryable = queryable.ApplyIncludes(mappedIncludes);
172-
}
173-
174163
IQueryable<T> filteredQuery = queryable;
175164

176-
// Apply only the main entity filters (include filters were already applied)
165+
// Apply main entity filters first
177166
if (mainFilters != null)
178167
filteredQuery = filteredQuery.ApplyFilters(mainFilters);
179168

169+
// Apply sorting before includes to prevent EF Core query translation issues
180170
if (parameters.Sort?.Count > 0)
181171
filteredQuery = filteredQuery.ApplySorting(parameters.Sort);
182172

173+
// Apply filtered includes after sorting to avoid complex query translation issues
174+
if (includeFilters.Count > 0)
175+
{
176+
filteredQuery = filteredQuery.ApplyFilteredIncludes(mappedIncludes, includeFilters);
177+
}
178+
else
179+
{
180+
// Regular includes without filters
181+
filteredQuery = filteredQuery.ApplyIncludes(mappedIncludes);
182+
}
183+
183184
int totalCount = await filteredQuery.CountAsync().ConfigureAwait(false);
184185

185186
if (parameters.Pagination != null)

0 commit comments

Comments
 (0)