zoukankan      html  css  js  c++  java
  • OData V4 系列 Ajax请求 CRUD

           OData 学习目录

           上一篇已经完成了服务创建,本篇主要介绍如何通过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;
                }
            });
        }
  • 相关阅读:
    Win10LTSC无法下载新版Microsoft Edge浏览器
    python识别视频黑屏或者低清晰度
    python提取视频第一帧图片
    盘点一下lua脚本和python的区别(基础)
    selenium控制已打开的页面
    frida- registernatives获取so层动态注册函数
    剑指 Offer 53
    剑指 Offer 52. 两个链表的第一个公共节点
    单链表中的环涉及到的6个相关问题
    剑指 Offer 51. 数组中的逆序对
  • 原文地址:https://www.cnblogs.com/Fengger/p/4958728.html
Copyright © 2011-2022 走看看