Development With A Dot ASP NET Core OData Part 1

Prior to the advent of ASP.NET Core, OData was a important part of the .NET ecosystem. As a result Breeze only retains its OData support for Net 4.x ASP.NET Web API applications. This enables Count and sets the maximum result size to a fairly large I have some grids users tend to scroll through. As APIs continue to explode, each organization releases its own unique REST/SOAP/Bulk API to consume their data. And some of them also come up with their own unique query languages, such as ROQL , SOQL , etc.

odata net core

The content added to index.html are shown in Listing 4. I will also add a method called GetDemoData() for loading the data object in memory with hardcoded values. This method loads two parent records, each with a one “CurrentOrder” record and two “OrdersShipped” records. A complete listing of the controller class can be seen in Listing 2. The second step is to modify the current method inside the controller.

The second Get() action takes an integer key parameter that represents the EmployeeID whose details are to be retrieved. The AddOData() call also specifies various OData features we want to support for our service. For example, we use Select(), Filter(), and OrderBy() methods to enable the respective features.

Once the EDM has been defined, we need to register it. To do so, we should call into AddOData on the services collection in the ConfigureServices method on our Startup class. This registers OData services on the IoC container, and it accepts a delegate to configure ODataOptions.

Make sure to pick ASP.NET Core 5 as the target framework since we will be using the newest release of NuGet packages available as of this writing. The method call builder.Select().Expand().Filter().OrderBy().MaxTop.Count() ensures that all of the typical OData features are enabled for the routes. The attribute enables the endpoint to be queried by using the OData syntax. Within the Route attributes we can define how the OData endpoint can look like. We can also define the mandatory path parameters with the API. There is an additional EnableQuery attribute on top of every GET API endpoint.

OData binding

Let’s take the example of a Heroes API. Technically, this API fetches all the Heroes stored in a backend database to the client as required. In this article, let’s look at how we can add OData capabilities to a simple Web API using the latest OData package and ASP.NET Core as our stack. We’ve describe here some of the real-world challenges of Web API OData development. These are pretty serious obstacles for many applications.

Using $expand can query the internal or navigation property object. The $top fetches specified the count of top records in the collection. So to work this operator, we must specify an extension method like ‘SetMaxTo’. Telerik and Kendo UI are part of Progress product portfolio.

Support & Learning Resources

We will now enable Selection, Expansion, Count, Filter, OrderBy, Top, and Skip for all routes. We have to register the OData endpoints in the startup.cs file under the configure Method to query the data. OData query support in Web API comes from the attribute. Currently the OData support is still in an evolving state and many more features may be added before the final release.

Similarly, we can add the OData processing onto API with a route parameter as below. We send the id value the return data of which shall be put to processing in the way similar to how we have configured in our route. We first add OData services to the service pipeline via the ConfigureServices() method, and then add the OData middleware using the Configure() method. Simply put, OData routing isn’t working when we use the UseRouting() and UseEndpoints() setup. Hence, we would need to use our good old UseMvc() when configuring OData into the aspnetcore3.x project.

  • We shall use the latest OData package and ASP.NET Core as our stack.
  • The adapter provides a great alternative to WCF Data Services client.
  • The first test we can perform is to check that OData returns our metadata from our OData URI endpoint.
  • Each of the requests in this message is processed one by one, and the combined results are returned in one response message.
  • The API employs a UnitOfWork approach, where there is a single UnitOfWork instance that is injected into the API controllers.
  • OData failed to gain traction because it allowed clients to execute inefficient and unoptimized queries.

We will see a problem with the implementation of the first method in the next post. 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. On the same lines you can check PUT and DELETE requests. Now, let’s re-shape the data by specifying the columns that are returned. To do so, first run the OData service project by pressing F5.


But OData does all that work for us and returns the requested data. Here, I am assuming that you have Northwind sample database installed in your SQL Server and want to use Employees table for this example. Hat’s not the case you need to create an entity class that maps to whatever table you want to use.

Alter it if required to reflect your development environment . To test the application, I will create a simple HTML page (index.html) that will act as a test harness. Cybersecurity outsourcing Nixu Cybersecurity This page will contain a few links for calling into the controller and the results will be returned directly to the browser as a JSON formatted text file.

odata net core

Now you’re ready to consume the endpoint with OData protocols. So that’s all about a small introduction on OData in .Net5 Web API application. The $skip skips the specified number of records and fetches the remaining data. The $filter filters data based on a boolean condition. The following are conditional operators that have to be used in URLs.

WCF Data Services (WCF OData)

So will be querying the data from that list to get the response as JSON. In the solution explorer, Right-click on the project and select the Manage NuGet Packages where you can find those packages Companies that Use Node JS in Production in the browse section. The first thing to install is to install the ASP.NET Core ODataNuget package and also we need the ASP.NET Core NewtonsoftJson for input and output format parameters.

These kinds of validation can be quite complex, and I am currently writing queryables which return a subset of “valid rows for edit”. Then this same querable is used when the edit comes as a post request from the user, to ensure I can actually retrieve said entity, before it is edited. This is working very well, as it means the user cannot just change the “ID” in the post request – it wont find the entity and will throw an error naturally. Add a new Empty Web Application project named ODataWebAPI.API selecting the Web API template. For start add a reference to the ODataWebAPI.Data project and a connection string the EntitiesContext we created before.

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. The attribute enables OData querying for the underlying action.

  • If that IQueryable comes from a DbContet, the OData query will be used to construct a LINQ query and by extension the final SQL query.
  • Check the below configuration for the latest version, now need to just manage the basic setting in the ConfigureServices method of the startup file.
  • The first thing you’ll want to do, after starting a new API project, is adding the necessary OData NuGet package.
  • Remember that this feature does not require any parameter in the GetAllStudents() Action method in the controller.
  • Did you try to refresh the page or clear cache in Chrome?

On the downside, either the Breeze or conventional Web API path leads to an idiosyncratic API. That may not be the best approach if you need a public API. The Breeze API is “standard” for Breeze clients only; a custom Web API implementation is not standard at all. A Breeze Web API server gives you the best combination of productivity, flexibility, power, and safety. There are no metadata namespace issues, no fundamental obstacles to transactions or your control over save order. The Breeze Web API server handles these for you when used with Entity Framework or NHIbernate.

These are the keys to creating and maintaining a successful business that will last the test of time. That said, he still keeps an eye out for new developments concerning other products from the Microsoft .NET stack.He is a Microsoft MVP and a board member of the RD MS Community. Kevin likes to travel to places he hasn’t seen before, and enjoys a good glass of wine in the company of a few good friends. Deleting a person can be achieved by sending a DELETE request to the resource you want to delete. In the Configure method you’d additionally add a call into MapODataRoute to map routes to OData controllers, and that’s where the EDM is injected. This is an EDM that exposes a set of people and a set of vinyl records.

Author: AdminNew