c# Mapping dynamic odata routes with ASP NET Core OData 8.0
Contents
Do keep in mind the entity set name that you give, it is common to have a pluralized form of the entity name, but it is not required. Now I wanted to update to the newest ASP.NET Core OData 8.0 and the whole routing changed so that the current workaround does not work anymore. The symbol package is uploaded to nuget symbol server.
Guess I’m looking for someone who have made this work. Find out the service status of NuGet.org and its related services. 312.2K Microsoft.AspNetCore.OData.NewtonsoftJson This package contains customized Newtonsoft.Json serializer converters to support OData serialization. 2.2M AutoMapper.AspNetCore.OData.EFCore Creates LINQ expressions from ODataQueryOptions and executes the query. Package Downloads Microsoft.AspNetCore.OData.Versioning A service API versioning library for Microsoft ASP.NET Core and OData v4.0. This is the official ASP.NET Core OData repository.ASP.NET Core OData is a server side library built upon ODataLib and ASP.NET Core.
1 Building and Testing in Visual Studio
Idea is have a common method, and disambiguate based on entity name you require. With Linq2RestANC for client side consumption, you can easily pass your custom query parameters too. To be clear I’m creating a ASP.NET Core web api with the full .NET Framework and not only .Core framework. My current code is a mix of the best/worst of both samples and work in the sense that I can filter the WebAPI but can’t get it to expand or hide properties.
- 312.2K Microsoft.AspNetCore.OData.NewtonsoftJson This package contains customized Newtonsoft.Json serializer converters to support OData serialization.
- Use this method to add services to the container.
- My current code is a mix of the best/worst of both samples and work in the sense that I can filter the WebAPI but can’t get it to expand or hide properties.
It is necessary in the end to set these ODataFeature()… That’s not beautiful but it gets the dynamic job done… Making statements based on opinion; back them up with references or Data Lake vs Data Warehouse personal experience. This solution allows you to have more control about how you expose your entities via OData, but the downside is that it doesn’t automatically generates routes.
I’ve read the two blog posts of the update Blog1Blog2 and it seems that I can’t use the «old» workaround anymore as the function MapODataRoute() within the endpoints is now gone. It also seems that none of the built-in routing convention work for my use-case as all require the EDM model to be present at debug time. I’ve got an application where the EDM datatypes are generated during the runtime of the application . Based loosely on OData DynamicEDMModelCreation Sample – refactored to use the new endpoint routing. There the EDM model is dynamically generated at runtime and all requests are forwarded to the same controller. You can also easily have generic impl., as below.
2 Support
I managed to make it work, but I didn’t use the provided OData routing because I needed more granularity. With this solution, you can create your own web API, while still allowing the use of OData query parameters. // This method gets called by the runtime. Use this method to add services to the container. I’m trying to create a new ASP.NET Core project with a «simple» web api using OData and EntityFramework.
And then I found out that while $apply works, ASP.NET Core OData won’t translate it to an EF GroupBy query …. Working with the 8 RC over the last few months, the constant breaking changes in routing even in the RC versions was ….. The real documentation at this point are the repo examples. Can anyone see what I’m missing og have a working ASP.NET Odata sample.
NuGet packages (
In your ASP.NET Core’s project you need to add a reference to the Microsoft.AspNetCore.OData NuGet package. This includes the server-side implementation of OData version 4 for ASP.NET Core. This package contains everything you need to create OData v4.0 endpoints using ASP.NET Core MVC Core 3.x and 5.x to support OData query syntax for your Web APIs. Within the ODataWrapperHelper you can check stuff and get/set your dynamic edmModel.
I have previously used OData with older versions of ASP.NET. Connect and share knowledge within a single location that is structured and easy to search. Provides a set of libraries which add service API versioning to ASP.NET Web API, OData with ASP.NET Web API, and ASP.NET Core. #r directive can https://cryptominer.services/ be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package. This is the very basics, in the future posts we will explore other options, such as querying over the URL and creating functions and actions.
References
So no, you won’t be able to expand children entities. For projects that support PackageReference, copy this XML node into the project file to reference the package. Visual Studio 2022 is required to build the source project in order to support the DateOnly and TimeOnly types, which were introduced in .NET 6. Now, the first method, the one without parameters, returns all of the entities in the database, and the second, as one would expect, returns possibly one from its id property. I have a github repo which auto generates ASP.NET Core OData v4 controllers from a code first EF model, using T4. It uses Microsoft.AspNetCore.OData.vNext 6.0.2-alpha-rtm.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.