OData / OData/AspNetCoreOData

oData 8.0.3 with .NET6 reports an error when the query uses $select or $expand

Open
#367 11 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
505
Forks
186
PR merge metrics
No merged PRs in 30d

Description

When we execute a query that uses $select or $expand, the request does not return data
Assemblies affected
Microsoft.NET.Sdk.Web
TargetFramework:net6.0
Microsoft.AspNetCore.Mvc.NewtonsoftJson: Version=5.0.12
Microsoft.AspNetCore.OData: Version=8.0.3
Microsoft.AspNetCore.SpaServices.Extensions: Version=5.0.12
Microsoft.OData.Core: Version=7.9.4
Microsoft.OData.Edm: Version=7.9.4
Microsoft.OData.ModelBuilder: Version=1.0.7
Reproduce steps
Create a WEB MVC project that targets Microsoft.NET.Sdk.Web, net6.0, create a query with a $select or $expand
Expected result
It should return data
Actual result
Failed to load response data: No data found for resource with given identifier
Additional detail
We recently migrated our project from net47 to net.5#.0. We upgraded oData to 8.3 and we have a serious problem
Queries that use $expand, $select do not work anymore, used to work
$expand=fillLevels,sensors&$filter=((deviceName/modelName%20eq%20'Rapidpoint%20500')%20and%20(deviceName/name%20eq%20'Rapidpoint%20500;10001'))%20and%20(IsActive%20eq%20true)&$top=10&$orderby=LocationSortOrder%20asc&$count=true $select=errorId&$filter=(deviceIdent%20eq%20721)%20and%20((familyName%20eq%20'Bloodgas')%20and%20(deviceName/modelName%20eq%20'Rapidpoint%20500'))%20and%20(eventTime%20ge%202021-10-31T00:00:00.000Z%20and%20eventTime%20lt%202021-11-01T00:00:00.000Z)&$orderby=eventTime%20desc,errorId%20asc
Queries that use $filter, $orderby, $top, $apply are working perfect
$filter=measurementTime%20ge%202021-10-24T00:00:00.000Z%20and%20measurementTime%20lt%202021-11-01T00:00:00.000Z&$top=30&$orderby=measurementSortOrder%20asc,measurementTime%20desc&$count=true $apply=filter(measurementTime%20ge%202021-10-24T00:00:00.000Z%20and%20measurementTime%20lt%202021-11-01T00:00:00.000Z)/groupby((lotNumber))
This is how we register oData
services.AddControllers().AddOData(option => { option.Select(); option.Filter(); option.Count(); option.OrderBy(); option.Expand(); option.SetMaxTop(100); option.TimeZone = TimeZoneInfo.Utc; option.AddRouteComponents("odata", GetEdmModel()); option.AddRouteComponents("odata/{workspaceId}", GetEdmModel()); });

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure in a Microsoft.NET.Sdk.Web project targeting net6.0 with the listed OData packages, using the provided $select and $expand queries. Start with the AddOData registration and GetEdmModel(); done means those queries return data while the documented $filter, $orderby, $top, and $apply queries continue to work.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.