当前位置:首页 > Windows程序 > 正文

[转]使用ASP.NET Web API 2创建OData v4 终结点

2024-03-31 Windows程序

开放数据协议(Open Data Protocol【简称OData】)是用于Web的数据访问协议。OData提供了一种对数据集进行CRUD操作(Create,Read,Update,Delete)的统一方式。
Asp.Net Web API支持该协议的v3 和v4版,甚至可以创建一个和v3终结点并排运行的v4终结点。
该博文演示了如何创建支持CRUD操作的OData v4终结点。

用到的软件版本

Web API 2

OData v4

VS 2013 Update 5

EF6

.Net 4.5.2

创建VS项目

在VS中创建一个新的Asp.Net Web应用项目,命名为“PersonsService”,如下图:

技术分享

然后继续看下图:

技术分享

安装OData Nuget包

打开Nuget包管理器控制台,输入以下命令:

Install-Package Microsoft.AspNet.Odata

该命令会安装最新版本的OData Nuget 包。

添加Model类

Model类是一个表示应用中的数据实体的对象。

在解决方案资源管理器中的Models文件夹下,创建一个Person类:

按照惯例,model类应该放在Models文件夹下,但是在你自己的项目中可以不这么做。

下面是我的Person类的代码:

namespace PersonsService.Models { public class Person { public int Id { get; set; } public string Name { get; set; } public bool Gender { get; set; } public string UserName { get; set; } } } 启用Entity Framework

这篇博客,我们使用EF的Code First模式来创建数据库。

Web API OData不要求一定得是EF。只要数据访问层可以将数据库实体转换成model,使用任何数据访问层都可以。

首先,安装EF的Nuget包。在包管理器控制台中使用下面的命令:

Install-Package EntityFramework

打开Web.config文件,在configuration元素中添加下面的connectionStrings节点:

<connectionStrings> <add name="PersonsContext" connectionString="Server=.;Database=PersonsDB;Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings>

接下来,,在Models文件夹下添加一个PersonsContext类:

using System.Data.Entity; namespace PersonsService.Models { public class PersonsContext:DbContext { public PersonsContext() : base("name=PersonsContext") { } public DbSet<Person> Persons { get; set; } } }

在构造函数中,"name=PersonsContext"指定了连接字符串的命名。

配置OData终结点

打开App_Start/WebApiConfig.cs文件,配置下面的新代码(删除自动生成的代码):

using System.Web.Http; using System.Web.OData.Builder; using System.Web.OData.Extensions; using PersonsService.Models; namespace PersonsService { public static class WebApiConfig { public static void Register(HttpConfiguration config) { //新代码 ODataModelBuilder builder=new ODataConventionModelBuilder(); builder.EntitySet<Person>("Persons"); config.MapODataServiceRoute( routeName:"odata", routePrefix:"odata", model:builder.GetEdmModel() ); } } }

上面的代码做了两件事:

创建了一个实体数据模型(Entity Data Model【简称EDM】)。

添加了一个路由。

EDM是一个抽象的数据模型。EDM用于创建服务元数据文档。ODataConventionModelBuilder类使用默认的命名规范创建了一个EDM。这种方式需要写的代码最少。如果你想更多地控制EDM,那么你可以使用 ODataModelBuilder类来创建EDM类,这样做就要显式添加属性,键和导航属性。

路由(route)会告诉Web API如何将HTTP请求路由到终结点。调用MapODataServiceRoute 扩展方法可以创建一个OData v4路由。

如果你的应用有了多个OData终结点,那么要为每个终结点创建一个单独的路由,给每个路由一个唯一的路由名和前缀(prefix)。

添加OData控制器

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/40476.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494595访问次数
  • 建站天数
  • 友情链接