OData V4 系列 Ajax请求 CRUD
上一篇已经完成了服务创建,本篇主要介绍如何通过Ajax请求Odata服务,OData操作主要有 Get、Post、Patch、Put、Delete等操作。
Post 操作
public async Task<IHttpActionResult> Post(Product product)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_dbContext.Products.Add(product);
await _dbContext.SaveChangesAsync();
return Created(product);
}
function addPro() {
var pro = {
Name: "OData Create",
Price: 1024,
Category: "IT"
};
//创建产品信息
$.ajax({
url: "/Odata/Products",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "JSON",
data: JSON.stringify(pro),
success: function (r) {
alert(r.Id);
},
error: function (e) {
debugger;
}
});
}
Patch 操作 只修改有变化的实体属性
public async Task<IHttpActionResult> Patch([FromODataUri] int key, Delta<Product> product)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var entity = await _dbContext.Products.FindAsync(key);
if (entity == null)
{
return NotFound();
}
product.Patch(entity);
try
{
await _dbContext.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
throw;
}
return Updated(entity);
}
var pro = {
SupplierId: 2
}; //创建产品信息
$.ajax({
url: "/Odata/Products(" + id + ")",
type: "Patch",
contentType: "application/json; charset=utf-8",
dataType: "JSON",
data: JSON.stringify(pro),
success: function (r) {
debugger;
},
error: function (e) {
debugger;
}
});
Update 操作,修改所有实体
public async Task<IHttpActionResult> Put([FromODataUri] int key, Product update)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (key != update.Id)
{
return BadRequest();
}
_dbContext.Entry(update).State = EntityState.Modified;
try
{
await _dbContext.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!Exists(key))
{
return NotFound();
}
else
{
throw;
}
}
return Updated(update);
}
Delete 操作
public async Task<IHttpActionResult> Delete([FromODataUri] int key)
{
var product = await _dbContext.Products.FindAsync(key);
if (product == null)
{
return NotFound();
}
_dbContext.Products.Remove(product);
await _dbContext.SaveChangesAsync();
return StatusCode(HttpStatusCode.NoContent);
}
function deletePro(id) {
$.ajax({
url: "/Odata/Products(" + id + ")",
contentType: "application/json; charset=utf-8",
type: "Delete",
success: function (r) {
debugger;
},
error: function (r) {
debugger;
}
});
}
OData V4 系列 Ajax请求 CRUD的更多相关文章
- OData V4 系列 Action 与 Function
OData 学习目录 了解过WebApi的都知道,WebApi默认方法 Get.Post.Put,如果增加其它过多Post方法即不能识别,还需增加其它配制,请求的Url还需加上Controller及A ...
- OData V4 系列 查询操作
OData 学习目录 对OData的操作,主要是查询,下面把相关的查询情况列出来,供参考学习,每个操作都有对应的截图,便于理解 默认查询 $expand 查询导航属性关系 ,查询Product相关的 ...
- OData V4 系列 .net应用
OData 学习目录 添加 OData Client Code Generator 扩展 添加OData T4生成工具 修改 T4 模板的 MetadataDocumentUri 运行Web项目,之后 ...
- OData V4 系列 服务创建
OData 学习目录 创建应用程序 添加引用 install-package entityframework . Install-Package Microsoft.AspNet.Odata . In ...
- OData V4 学习目录
开放数据协议(Open Data Protocol,缩写OData)是一种描述如何创建和访问Restful服务的OASIS标准. Open Data Protocol (开放数据协议,OData)是用 ...
- SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】
注意:此文章是个人原创,希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈,你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...
- django系列6--Ajax05 请求头ContentType, 使用Ajax上传文件
一.请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有三种: 1.application/x-www-form-urlencoded 这应该是最常见的 POST ...
- 使用ASP.NET Web API 2创建OData v4 终结点
开放数据协议(Open Data Protocol[简称OData])是用于Web的数据访问协议.OData提供了一种对数据集进行CRUD操作(Create,Read,Update,Delete)的统 ...
- [转]使用ASP.NET Web API 2创建OData v4 终结点
本文转自:http://www.cnblogs.com/farb/p/ODataAspNetWebAPI.html 开放数据协议(Open Data Protocol[简称OData])是用于Web的 ...
随机推荐
- LINQ系列:LINQ to DataSet的DataTable操作
LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...
- SQL Server中In-Flight日志究竟是多少
在SQL Server中,利用日志的WAL来保证关系数据库的持久性,但由于硬盘的特性,不可能使得每生成一条日志,就直接向磁盘写一次,因此日志会被缓存起来,到一定数据量才会写入磁盘.这部分已经生 ...
- jQuery 2.0.3 源码分析Sizzle引擎 - 超级匹配
声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 通过Expr.find[ type ]我们找出选择器最右边的最终seed种子合集 通过Sizzle.compile函数编译器 ...
- 万能Adapter以及ViewHolder性能优化
//CommonAdapter import android.content.Context; import android.widget.BaseAdapter; import java.util. ...
- Android之genymotion模拟器安装于配置
今天是双休日,可怜没人陪,只好一个人玩电脑了,之前别人一直给我推荐genymotion模拟器,说各种方便,秒杀Android自带模拟器,所以就趁这个周末搞了一下,总体感觉还挺不错的,确实比Androi ...
- Rehosting the Workflow Designer
官方文档:https://msdn.microsoft.com/en-us/library/dd489451(v=vs.110).aspx The Windows Workflow Designer ...
- EasyUI Tabs绑定右键
JS: /*为选项卡绑定右键*/ $("#tabs").tabs({ onConte ...
- Android随笔之——用shell脚本模拟用户按键、触摸操作
之前写过两篇关于Android中模拟用户操作的博客(其实用一篇是转载的),现在就来讲讲用shell脚本来模拟用户按键操作.本次的目标是用shell脚本打开微信并在其搜索框中搜索相关内容. 本文的模拟功 ...
- geotrellis使用(六)Scala并发(并行)编程
本文主要讲解Scala的并发(并行)编程,那么为什么题目概称geotrellis使用(六)呢,主要因为本系列讲解如何使用Geotrellis,具体前几篇博文已经介绍过了.我觉得干任何一件事情基础很重要 ...
- 微软的坑:Url重写竟然会引起IIS内核模式缓存不工作
万万没有想到!当初为了解决使用负载均衡时记录客户端IP地址的问题,在IIS URL Rewrite Module中增加了一条URL重写规则(详见迁入阿里云后遇到的Request.UserHostAdd ...