受影响的程序集:ASP.NET Core OData 8.2.5
我收到错误
在 ASP.NET Core OData 8.2.5 上的类型“MyClass”上找不到名为“keyName”的属性
但它在 ASP.NET Core OData 8.2.4 版本之前运行良好。
此行引发异常:
(int)oDataQueryOptions.Count?.GetEntityCount(oDataQueryOptions.Filter?.ApplyTo(myClassQuery, new ODataQuerySettings()) ?? myClassQuery)
在下面的代码片段中提到。
重现步骤
https://localhost:8080/api/requests?$format=json&$top=10&$orderby=keyName&$count=true
你会得到一个例外。
型号
public class MyClass
{
[Key]
public int AutoId { get; set; }
public string KeyName { get; set; }
public string Description { get; set; }
}
网络API:
public Task GetMyClassData(ODataQueryOptions oDataQueryOptions)
{
var myClassQuery = dbContext.Table1
.GetAll()
.Select(t => new MyClass
{
AutoId = t.Autoid,
KeyName = t.KeyName,
Description = t.Description,
});
var response = new
{
totalRecords = (int)oDataQueryOptions.Count?.GetEntityCount(oDataQueryOptions.Filter?.ApplyTo(myClassQuery, new ODataQuerySettings()) ?? myClassQuery),
records = oDataQueryOptions.ApplyTo(myClassQuery).Cast()
};
}
请求/响应
要求:
https://localhost:8080/api/requests?$format=json&$top=10&$orderby=keyName&$count=true)
回应:
在“MyClass”类型上找不到名为“keyName”的属性
预期行为:它应该返回有效对象
应返回有效对象
根据 Microsoft.AspNetCore.OData 8.2.5 团队的说法,他们已经接受特定版本中存在错误并将得到解决。了解更多详情:BugDetails