正文转自:http://www.cnblogs.com/aehyok/p/3545824.html

前言

  很久没更新博客了,加上刚过年,现在准备再一次开张,继续协调的就学之路。本文已一起到Web
API2文山会海作品中http://www.cnblogs.com/aehyok/p/3446289.html

  示例项目下载地址http://pan.baidu.com/s/1sjEWVPN  

  开放数据协议(OData)是Web数据访问协议。OData提供了一种统一的点子来社团数量,查询数据,并经过操纵CRUD操作的数据集(创设,读取,更新和删除)。

  OData同时协理AtomPub(XML)和JSON格式。OData的还定义了一个办法来公开元数据有关的数量。客户端可以动用元数据来发现类型音信和关系的数码集。ASP.NET
Web API
OData可以很容易的创建OData终结点的数额集。您可以控制​​哪些操作的OData终结点帮忙。你可以托管两个的OData终结点,沿着非OData终结点。你可以完全的主宰你的数据模型,后台业务逻辑和数据层。

  在本教程中,您将创建一个简约的可供客户端可以查询的OData终结点。您仍可以创造一个C#客户端的终结点。本课程使用的Visual
Studio2013。

创建 Visual Studio 项目

 在本教程中,您将创建扶助中央的 CRUD 操作的OData 终结点。该终结点将公开一个纯净的资源,一个出品的列表。未来的教程旅长会添加更多的服从。

 采取恰当的沙盘举行创办项目

图片 1

 

并取名为OData,点击确认后,在下一个Asp.Net 项目对话框中精选
Empty的空模版,并在偏下目的添加文(加文)件夹和基本引用下:举行勾选Web  API。

图片 2

丰硕一个实体模型

 一个model就是在应用程序中显现数据的一个对象。在本教程中,我们需要一个突显产品的模子。这么些模型对应着我们的OData的实体类型。

在解决方案资源管理器中,右键单击Models文件夹。从上下文菜单中,采用添加然后选取类。

图片 3

累加相应的公文,并取名为Product。

在Product.cs文件中,添加如下类定义:

图片 4😉

    public class Product
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
    }

图片 5😉

ID属性为实体键。客户端可以通过ID来查询产品。此字段也是后台数据库中表的主键,之后展开转移项目的步子。

充裕一个OData的控制器

 控制器就是一个甩卖HTTP请求的类。在OData服务中您为各类实体数据集定义一个单独的控制器。在本教程中大家将开创一个纯粹的控制器。

在缓解方案资源管理器中,右键单击控制器文件夹。采用丰盛,然后采取控制器.

图片 6

在累加支架的对话框中,接纳一个OData的沙盘,如下图所示。

图片 7

 在添加控制器对话框中,命名控制器名称为ProductsController。接纳“使用异步控制器操作”。在模型类下拉菜单中采用Product。  

图片 8

 

然后点击上边的“新建数据上下文”

图片 9  

并取名为Product瑟维斯(Service)Context。

然后将得以看来会在档次中添加六个文本:

图片 10 

添加EDM和Route

在缓解方案资源管理器中,打开App_Start文件夹,然后找到WebApiConfig.cs文件并开拓。用上边的代码举行轮换此前默认的配置代码。

        public static void Register(HttpConfiguration config)
        {
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<Product>("Products");
            config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel());
        }

本条代码处理了四个问题:

1、为OData终结点创制一个数目实体模型(EDM)。

2、为OData终结点添加一个路由。

EDM是一个虚幻的数据模型。EDM用于创立元数据文件和定义服务的URIs.ODataConventionModelBuilder 通过使用一组默认的EDM命名约定来创立EDM。那种情势需要最少的代码。假诺你想更多的来控制EDM,使用ODataModelBuilder类明确的添加属性、键、导航属性来创建EDM。

这个EntitySet 方法就是将一个实体添加到EDM实体中。

modelBuilder.EntitySet<Product>("Products");

字符串Products定义的是以此实体集的名号。控制器的称号必须匹配实体集的称号。在这个科目中,那一个实体集的称呼被取名为”Products“,那个控制器被取名为ProductsController。假使你命名这多少个实体集为”ProductSet“,那么您将索要把控制器命名为”ProductSetController“。请留心一个终结点可以涵盖五个实体集。为每个实体集调用EntitySet<T>,然后定义一个合适的控制器。

MapODataRoute 方法为OData终结点添加一个路由。

config.Routes.MapODataRoute("ODataRoute", "odata", model);

第一个参数是一个路由的称谓。你的劳务的客户端看不到这些名称的。第二个参数是终结点URL的前缀。鉴于这个代码,针对产品实业集的URL是http://*hostname*/odata/Products。你的应用程序可能会有超过一个的OData终结点。对于每一个终结点,调用**MapODataRoute** 方法,提供一个唯一的路由名称和一个唯一的URL前缀。

Seed the Database (可选的)

 
在这一步骤中,您将应用EF框架来插入数据库中有些测试数据。这一步是可选的,可是它能让你顿时测试出OData终结点。

从工具菜单中找到如下

图片 11

 

 

并键入如下命名:

Enable-Migrations

这将添加一个Migrations 的公文夹,并有一个Configuration.cs的文件

图片 12

 

打开Configuration.cs,在Seed方法中添加如下的代码:

图片 13😉

        protected override void Seed(OData.Models.ProductServiceContext context)
        {
            context.Products.AddOrUpdate(new Product[] {
                new Product() { ID = 1, Name = "Hat", Price = 15, Category = "Apparel" },
                new Product() { ID = 2, Name = "Socks", Price = 5, Category = "Apparel" },
                new Product() { ID = 3, Name = "Scarf", Price = 12, Category = "Apparel" },
                new Product() { ID = 4, Name = "Yo-yo", Price = 4.95M, Category = "Toys" },
                new Product() { ID = 5, Name = "Puzzle", Price = 8, Category = "Toys" },
            });
        }

图片 14😉

然后再在软件包管理器控制台窗口,输入以下命令,并一一执行多少个指令:

Add-Migration Initial
Update-Database

测试OData终结点

 在这一片段,大家将运用 Fiddler Web
Debugging
 来发送请求到终结点来检测响应信息。这将扶持你去了解OData终结点的效果。

在Visual Studio中,按F5进展运行程序。

 

1、然后在Fiddler中http://localhost:3629/Odata/Products,拿到产品列表

图片 15

点击执行

图片 16

 

2、为了取得元数据文件,可以发送请求如下http://localhost:3629/odata/$metadata,直接通过浏览器

图片 17

 

3、为了通过ID来赢得某一个实体http://localhost:3629/Odata/Products(1)

图片 18

4、可以窥见默认拿到的数据格式是JSON格式的,下边大家来安装一个xml格式的。

图片 19

得到如下数据

图片 20

 

5、再换一个数额格式application/json;odata=verbose

图片 21

获取数码如下

图片 22

总结

图片 23

这是进行顺序调用上下文之后爆发的数据库文件。直接扭转在品种中,举办添加即可。

示范项目下载地址http://pan.baidu.com/s/1sjEWVPN

正文参考地址http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/creating-an-odata-endpoint

 

 

分类: Asp.Net Web API
2

 

相关文章

网站地图xml地图