.NET 帮助

OData C#(对开发人员如何工作)

发布 2024年八月13日
分享:

开放数据协议(OData)在 Microsoft .NET 开发中简化了 RESTful API 的构建和使用。 它提供了一种标准化的方法,通过熟悉的 CRUD 来查询和操作数据。(创建、读取、更新、删除)业务。 本文将探讨开放数据协议如何简化 .NET 中的 API 开发,提供示例并强调其主要优势。 要了解有关 OData 的更多信息,您可以查看OData C# GitHub 存储库源代码。

OData C#(开发人员如何使用):图 1 - OData C# - 数据访问协议

介绍

OData 遵循构建 RESTful Web API 的标准实践,使用 URL 和 HTTP 动词(如 GET 和 POST)来定义操作。 它使用实体数据模型表示数据(EDM)翻译时必须使用 JSON 或 AtomPub 作为消息编码。 虽然与 GraphQL 相比,OData 简化了 API 开发,但其提供的高级功能可能较少。

OData C#(开发者如何使用):图 2 - OData

在 .NET 中使用 OData 的好处

  • 标准化: OData 采用一致的方式来定义实体数据模型、处理请求和格式化响应。 这样可以降低开发的复杂性,简化客户端应用程序的集成。
  • 丰富的查询功能: OData 支持以统一的方式查询数据,以执行 CRUD 操作、过滤、.NET、Java、Python 或 Node js。($过滤器)排序(升序/降序)($orderby)和分页($top,$skip)这些功能允许客户高效地检索特定的数据集。
  • 改善开发人员体验: OData 的 .NET 库简化了 API 开发。 开发人员可以利用预置组件进行路由选择、查询处理和数据序列化,从而减少代码重复和开发时间。
  • 互操作性: 各种平台上符合 OData 标准的客户端可以与您基于 .NET 的 OData 服务无缝交互,促进更广泛的应用集成。

.NET Framework中开始使用OData

用于 OData 的 .NET 库通过促进操作数据集的有效方法来增强开发人员的体验。 它简化了在 .NET 开发中构建和使用 RESTful API 的过程。 它提供了一种标准化的方法,通过熟悉的 CRUD 操作来查询和操作数据(创建、读取、更新、删除).

在 .NET 项目中设置 OData

首先在 Visual Studio 中打开新项目。 然后,导航到 "解决方案资源管理器",右键单击您的项目,并选择 "管理 NuGet 包"。 搜索 Microsoft.AspNetCore.OData 并安装。 当前的 OData 版本为 8.2.5。

要在 NuGet 软件包管理器控制台中安装 OData,请使用以下命令。

Install-Package Microsoft.AspNetCore.OData
Install-Package Microsoft.AspNetCore.OData
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

OData C#(它对开发人员的工作原理):图 3 - 安装 OData

示例:在 ASP.NET Core 中创建 OData 服务

让我们在 ASP.NET Core 应用程序中创建一个简单的 OData 模型类。 在下面的代码中,下面的类将公开可使用 OData 语法查询的服务列表。

public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}
public class Service
{
    public int Id { get; set; } 
    public string FirstName { get; set; }
    public decimal Price { get; set; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码描述

ODataModelBuilder 类表示 C# 中用于管理服务的基本数据结构。它包括三个属性: Id:服务的整数标识符。 FirstName:一个字符串,代表与服务相关的名字。 Price:价格:表示服务价格的十进制值。在 .NET 开发中,该类可用作创建更复杂的服务相关功能的构件。 我们还可能根据场景使用集合或导航属性。

以下是如何在 Visual Studio 的 ASP.NET Core 应用程序中设置 OData 控制器,通过标准化的 OData 端点公开服务列表。 下面的示例演示了使用静态服务列表和在 Web API 中启用 OData 查询功能的基本实现:

using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;
namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName= "Smartphone", Price = 2585.9M }
        };
        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}
using DemoOData.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using Microsoft.AspNetCore.OData.Routing.Controllers;
namespace DemoOData.Controllers
{
    [Route("odata/[controller]")]
    public class ServiceController : ODataController
    {
        private static readonly List<Service> Products = new List<Service>
        {
            new Service { Id = 1, FirstName = "Laptop", Price = 6239.9M },
            new Service { Id = 2, FirstName= "Smartphone", Price = 2585.9M }
        };
        [HttpGet]
        [EnableQuery]
        public IActionResult Get() => Ok(Products);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码描述

所提供的代码在 ASP.NET Core 应用程序中定义了一个名为 ServiceController 的 ODataController,可以使用 OData 协议查询和操作数据。 它将请求路由到 "odata/Service",并提供服务对象的静态列表,包括一台笔记本电脑和一部智能手机。 获取方法[启用查询]允许客户执行OData查询(过滤、排序、分页)在 "产品 "列表中,对于 HTTP GET 请求,以 IActionResult 的形式返回结果。

在程序.cs中注册 OData 服务

要将 OData 集成到 .NET 6 应用程序中,我们需要安装和配置必要的 OData 软件包。 这涉及定义 OData 模型、设置 OData 中间件以及配置服务以支持 OData 功能,如过滤、排序和扩展。

using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}
builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );
using DemoOData.Models;
using Microsoft.AspNetCore.OData;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
static IEdmModel GetEdmModel()
{
    ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
    builder.EntitySet<Service>("Services");
    return builder.GetEdmModel();
}
builder.Services.AddControllers()
    .AddOData(options => options
        .AddRouteComponents("odata", GetEdmModel())
        .Select()
        .Filter()
        .OrderBy()
        .SetMaxTop(20)
        .Count()
        .Expand()
    );
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码描述

该代码用于在 .NET 6 应用程序中配置 OData 支持。 首先,它导入必要的命名空间并创建一个 WebApplicationBuilder 实例。 GetEdmModel 方法使用 ODataConventionModelBuilder 定义 OData 模型,ODataConventionModelBuilder 指定了服务实体的实体集。 然后调用 AddOData 方法来配置 OData 服务,包括启用选择、过滤、排序、计数、展开,以及设置查询结果的最大顶值为 20。 这种设置可确保应用程序能够有效处理 OData 查询。

AddOData()方法使用GetEdmModel()方法,它检索用于查询的数据模型,构成OData服务的基础。此服务使用一种称为实体数据模型(Entity Data Model)的抽象数据模型。(EDM)定义暴露的数据。 ODataConventionModelBuilder 类通过默认命名约定生成 EDM,从而最大限度地减少代码需求。 此外,开发人员还可以利用 ODataModelBuilder 类来更好地控制 EDM。

代码截图

OData C#(开发人员如何使用):图 4 - Visual Studio 中的代码

运行服务

运行服务后,您可以使用各种 OData 查询选项对服务进行查询,如

https://localhost:7131/odata/Service
https://localhost:7131/odata/Service
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

项目成果

OData C#(开发人员如何使用):图 5 - OData 服务输出

IronPDF 简介

IronPDF 是一个全面的 C# 库,旨在简化将文件转换为 PDF, 分割 PDF 页面从 PDF 中删除页面在 .NET 应用程序中,您可以使用这些工具。 它提供了广泛的功能,包括从 HTML、CSS、图像和 JavaScript 生成 PDF 的能力,使开发人员能够毫不费力地将网页内容转化为高质量的 PDF 文档。 IronPDF 凭借其直观的 API 和强大的渲染引擎,使开发人员能够简化 PDF 生成流程,轻松地将动态文档生成功能集成到他们的应用程序中。

OData C#(开发人员如何使用):图 6 - IronPDF

将 IronPDF 添加到项目中

要在 Visual Studio 中安装 IronPdf,请导航到 NuGet Package Manager Console,然后使用以下命令。

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

生成 PDF

要从 .NET 应用程序中的 HTML 内容生成 PDF 文档,我们可以使用 DinkToPdf 或类似库中的 ChromePdfRenderer 类。 本示例演示了如何创建包含雇员记录详细信息的 PDF。

public record Employee (string FirstName, string LastName);
class Program
{
    static void Main(string[] args)
    {
        var employee = new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {employee.FirstName} {employee.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
public record Employee (string FirstName, string LastName);
class Program
{
    static void Main(string[] args)
    {
        var employee = new Employee("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {employee.FirstName} {employee.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

本例创建了一个简单的 Employee 记录,然后使用 IronPDF 生成一个显示此人姓名的 PDF 文档。 它展示了 C# 记录如何与 .NET 应用程序中的 PDF 生成无缝集成。

OData C#(对开发人员的工作原理):图 7 - PDF 输出

结论

OData 通过提供标准化的查询和操作功能,简化了 .NET 中 RESTful API 的开发和使用。 我们还可以将其与 Entity Framework 集成,通过简化数据访问和管理提高开发效率。 OData 简化了应用程序接口(API)的开发,其丰富的查询功能和更好的开发人员体验实现了跨平台的无缝集成和互操作性。 此外,IronPDF 还为 .NET 应用程序中强大的 PDF 操作提供了全面的功能和支持。

< 前一页
StyleCop C#(它如何为开发人员工作)
下一步 >
IdentityServer .NET(开发人员如何工作)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,622,374 查看许可证 >