在.NET Core 刚刚1.0 RC的时候,我就给OData团队创建过Issue让他们支持ASP.NET Core,然而没有任何有意义的答复。

Roadmap for ASP.NET Core 1.0 RC2?

接着,在.NET Core 1.0刚刚发布的时候,又给他们创建了另外一个Issue,虽然被他们列为P1,但是已经没有下文:

Roadmap for OData WebAPI run on ASP.NET Core 1.0

然后在.NET Core 2.0 Preview版本发布的时候,我继续给OData 团队提Issue:

[vNext] Even ASP.NET Core 2 Preview 1 announced, OData WebAPI vNext still no updates

最终,在OData 7.0的时候,OData发布了基于ASP.NET Core的支持。

经过这么长时间的测试和迭代,我想,是时候创建一个基于OData的Web API。

不幸的是,OData再次走在ASP.NET Core 后面: https://github.com/OData/WebApi/issues/1748,所以这个例子只能使用ASP.NET Core 2.2。 

所幸的是,自从7.3.0-beta开始支持.NETCore 3.0(更新日期:2019.12.11),后续的博客中使用了该Beta版本。

本篇为Part I: Business Scenario

Knowledge Builder是个用来创建、维护、浏览知识点的Web App,Knowledge Builder API是服务于其需求的API。

简单来说,Knowlege Item是个复杂文本,外加一些额外的属性。

就常见的语数英而言,Knowledge本身要支持各种特殊符号,而且需要支付各种数学公式、数学图形等。

这是一个复杂度适中的API, 主要关于rich text的存储,图形文件上传下载等。

数据库表定义如下(基于T-SQL):

CREATE TABLE [dbo].[Knowledge] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[ContentType] SMALLINT NULL,
[Title] NVARCHAR (50) NOT NULL,
[Content] NVARCHAR (MAX) NOT NULL,
[Tags] NCHAR (100) NULL,
[CreatedAt] DATETIME DEFAULT (getdate()) NULL,
[ModifiedAt] DATETIME DEFAULT (getdate()) NULL,
PRIMARY KEY CLUSTERED ([ID] ASC)
);

创建基于OData的Web API - Knowledge Builder API, Part I:Business Scenario的更多相关文章

  1. 创建基于OData的Web API - Knowledge Builder API, Part IV: Write Controller

    基于上一篇<创建基于OData的Web API - Knowledge Builder API, Part III:Write Model and Controller>,新创建的ODat ...

  2. 创建基于OData的Web API - Knowledge Builder API, Part III:Write Model

    在前两篇文章<Part I: Business Scenario> 和<Part II: Project Setup>后,可以开始真正Model的创建. 步骤如下: 1. 创建 ...

  3. 创建基于OData的Web API - Knowledge Builder API, Part II:Project Setup

    本篇为Part II:Project Setup 查看第一篇<Part I:  Business Scenario> 第一步,准备步骤. 准备步骤一,下载.NET Core 2.2 SDK ...

  4. 使用 node-odata 轻松创建基于 OData 协议的 RESTful API

    前言 OData, 相信身为.NET程序员应该不为陌生, 对于他的实现, 之前也有童鞋进行过介绍(见:这里1,这里2). 微软的WCF Data Service即采用的该协议来进行通信, ASP.NE ...

  5. 基于SVG的web页面图形绘制API介绍

    转自:http://blog.csdn.net/jia20003/article/details/9185449 一:什么是SVG SVG是1999由W3C发布的2D图形描述语言,纯基于XML格式的标 ...

  6. Java Web学习系列——创建基于Maven的Web项目

    创建Maven Web项目 在MyEclipse for Spring中新建Maven项目 选择项目类型,在Artifact Id中选择maven-archetype-webapp 输入Group I ...

  7. 可能是最简单的方式:利用Eclipse创建基于Maven的Web项目

    1. 新建一个maven项目 2.在弹出框中选择创建一个简单项目 3. 然后输入参数,需要注意的是,在packagin中,选择war,web项目应该选择war 4. 点击finish后,基本项目结构就 ...

  8. idea创建基于maven的web项目

    1.点击create new project,选择maven,点击next 2.输入项目信息,点击finish 3.进入项目后,点击菜单File->Project Structure开始配置项目 ...

  9. maven-bundle-plugin插件, 用maven构建基于osgi的web应用

    maven-bundle-plugin 2.4.0以下版本导出META-INF中的内容到MANIFEST.MF中 今天终于把maven-bundle-plugin不能导出META-INF中的内容到Ex ...

随机推荐

  1. RegExp实现字符替换

    将字符串组中的所有Paul替换成Ringo,g:执行全局匹配,查找所有匹配而非在找到第一个匹配后停止;\b:匹配单词边界,划分匹配字符的起始范围 <!DOCTYPE html> <h ...

  2. vue在一个方法执行完后再执行另一个方法

    vue在一个方法执行完后执行另一个方法 用Promise来实现.Promise是ES6的新特性,用于处理异步操作逻辑,用过给Promise添加then和catch函数,处理成功和失败的情况 ES7中新 ...

  3. ESP8266开发之旅 网络篇⑨ HttpClient——ESP8266HTTPClient库的使用

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  4. web常用知识

    Html 1.打电话,发短信和发邮件 <a href="tel:0755-10086">打电话给:0755-10086</a> <a href=&qu ...

  5. LNMP与LAMP的工作原理

    LAMP的实现原理 LAMP=Linux+Apache+Mysql+PHP.​#工作原理:浏览器向服务器发送http请求,服务器 (Apache) 接受请求,由于php作为Apache的组件模块也会一 ...

  6. python中基本的数据类型

    基本数据类型 数据:描述衡量数据的状态 类型:不同的事物需要不同的类型存储 整型  int 定义:年龄,手机号码等是整数的数字 字符串b转化为整型b = '12'print(type(b))b = i ...

  7. SpringCloud之Eureka服务注册与发现(一)

    一 Eureka的基本架构 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper). Eureka 采用了 C-S 的设计架构 ...

  8. reduce,map,filter 的用法

    # filter用法 (对每一个数据进行筛选,满足条件的就保留)# 1,filter(功能函数,容器类型数据)# 2,过滤出来是一个地址,用list,或tuple进行包装# 3,过滤出来的是原容器类型 ...

  9. 配置Docker镜像加速

    1.在docker toolbox执行下面的命令进入VM bash docker-machine ssh default 2.执行下面的命令修改profile文件: sudo vi /var/lib/ ...

  10. 证明:S = 1 + 1/2 + 1/4 + 1/8 + 1/16 + ·······,求证 S = 2

    证: S = 1 + 1/2 + 1/4 + 1/8 + 1/16 + ······· (式1) 将式1左右两边除以2,得: S/2 = 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ...