Closed
Description
I have this issue when request query below:
http://localhost:60365/odata/Orders(20F37D86-3427-4A9E-8D63-16AEDDDB28FC,'BE')
NullReferenceException: Object reference not set to an instance of an object.
Microsoft.AspNet.OData.Routing.UnversionedODataPathRouteConstraint.Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) in UnversionedODataPathRouteConstraint.cs, line 54
I'm using
Microsoft.AspNetCore.OData 7.2.1
and
Microsoft.AspNetCore.OData.Versioning 3.2.0.
This is my api config:
services.AddApiVersioning(options =>
{
options.AssumeDefaultVersionWhenUnspecified = true;
options.ApiVersionReader = ASOFTApiVersions.CombineApiVersion;
setupAction?.Invoke(options);
});
services.AddMvcCore(options => options.EnableEndpointRouting = false);
// Add odata and enable Apiversion support
services.AddOData().EnableApiVersioning();
services.AddSingleton(sp => new ODataUriResolver
{
EnableNoDollarQueryOptions = true
});
My model configuration:
public class OrdersModelConfiguration : IModelConfiguration
{
public void Apply(ODataModelBuilder builder, ApiVersion apiVersion)
{
var orderEntityBuilder = builder.EntitySet<POST0016Entity>("Orders");
orderEntityBuilder.EntityType.HasKey(m => new { m.APK, m.DivisionID });
orderEntityBuilder.EntityType.Ignore(m => new { m.DeleteFlg });
orderEntityBuilder.EntityType.Expand(SelectExpandType.Allowed, "Items");
builder.EntityType<POST00161Entity>().HasKey(e => new { e.APK, e.DivisionID });
}
}
And my action in controller:
[EnableQuery]
public IActionResult Get([FromODataUri] Guid keyAPK, [FromODataUri] string keyDivisionID)
{
return Ok(SingleResult.Create(_context.Orders
.Where(e => e.APK == keyAPK && e.DivisionID == keyDivisionID).AsNoTracking()));
}