.NET 帮助

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

发布 2024年八月13日
分享:

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

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

介绍

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

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

在 .NET 中使用 OData 的好处

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

开始使用.NET 框架中的 OData

.NET 的 OData 库通过提供高效的数据集操作方式,提升了开发人员的体验。它简化了在 .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开发的基础构件。我们还可以根据场景使用 Collection 属性或导航属性。

以下是在 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”,并提供一个静态的Service对象列表,其中包括一台笔记本电脑和一部智能手机。带有装饰的Get方法 [启用查询]允许客户执行OData查询 (过滤、排序、分页) 在产品列表上,将结果作为IActionResult返回用于HTTP GET请求。

在Program.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 模型,指定了 Service 实体的实体集。随后调用 AddOData 方法来配置 OData 服务,包括启用 select、filter、order by、count、expand,并为查询结果设置最大 top 值为 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#库,旨在简化 创建, 操控渲染 在 .NET 应用程序中处理 PDF 文档。它提供了广泛的功能,包括从 HTML、CSS、图像和 JavaScript 生成 PDF 的能力,使开发人员能够轻松地将网页内容转换为高质量的 PDF 文档。凭借其直观的 API 和强大的渲染引擎,IronPDF 使开发人员能够简化 PDF 生成流程,轻松地将动态文档生成功能集成到他们的应用程序中。

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

添加IronPDF到项目

要在Visual Studio中安装IronPDF,请导航到NuGet包管理器控制台,并使用以下命令。

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: {person.FirstName} {person.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: {person.FirstName} {person.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

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

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

结论

OData 通过提供标准化的查询和操作功能,简化了在 .NET 中开发和使用 RESTful API 的过程。我们还可以将它与 Entity Framework 集成,通过简化数据访问和管理来提高开发效率。OData 简化了 API 开发,通过其丰富的查询功能和改进的开发者体验,实现了跨各种平台的无缝集成和互操作性。至于 IronPDF 全面的功能和支持。

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

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

免费NuGet下载 总下载量: 10,731,156 查看许可证 >