措施数据库格局标准化的开源数据协议
为了增强各类网页应用措施之间的数据兼容性,微软公司启动了一项旨在推广网页措施数据库格局标准化的开源数据协议(OData)打算,于此同时,他们还发 布了一款适用于OData协议的开发工具,以便利网页措施开发者们使用。
Open Data Protocol (开放数据协议,OData)是用来盘问和更新数据的一种Web协议,其供给了把存在于应用措施中的数据袒露出来的方法。OData运用且构建于很多 Web技术之上,好比HTTP、Atom Publishing Protocol(AtomPub)和JSON,供给了从各类应用措施、处事和存储库中访谒信息的能力。OData被用来从各类数据源中袒露和访谒信息, 这些数据源包孕但不限于:关系数据库、文件系统、内容打点系统和传统Web站点。
创建项目在VS中创建一个新的Asp.Net Web应用项目,定名为“PersonsService”,如下图:
安置Nuet包搜索Microsoft.AspNet.Odata包跟EntityFramework包安置
添加Model类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; } } }
生成数据库打开Web.config文件,在configuration元素中添加下面的connectionStrings节点:
<connectionStrings> <add 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; } } }
打开NuGet承打点器,措施承打点器控制台输入以下命令 "enable-migrations" ,"add-migration","update-database "
这个时候打开SQL Server 就可以看到已经创建好的数据库
配置OData终结点打开App_Start/WebApiConfig.cs文件,配置下面的新代码
using Microsoft.OData.Edm; using PersonsService.Models; using System.Web.Http; using System.Web.OData.Builder; using System.Web.OData.Extensions; namespace PersonsService { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 配置和处事 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); //构建路由处事 config.MapODataServiceRoute( routeName: "odata", routePrefix: "odata", model: GetModel() ); } private static IEdmModel GetModel() { var builder = new ODataConventionModelBuilder(); var esPerson = builder.EntitySet<Person>("Persons"); return builder.GetEdmModel(); } } }
上面的代码做了两件事:
创建了一个实体数据模型(Entity Data Model【简称EDM】)。
添加了一个路由。
EDM是一个抽象的数据模型。EDM用于创建处事元数据文档。ODataConventionModelBuilder类使用默认的定名规范创建了一个EDM。这种方法需要写的代码最少。如果你想更多地控制EDM,那么你可以使用 ODataModelBuilder类来创建EDM类,这样做就要显式添加属性,键和导航属性。
路由(route)会报告Web API如何将HTTP请求路由到终结点。挪用MapODataServiceRoute 扩展要领可以创建一个OData v4路由。
如果你的应用有了多个OData终结点,那么要为每个终结点创建一个单独的路由,给每个路由一个独一的路由名和前缀(prefix)。
添加OData控制器