Dynamics CRM2016 Web API之更新记录
? ? ? 本篇繼續探索web api,介紹如何通過web api更新記錄。
? ? 下面是一段簡單的更新代碼,更新了幾個不同類型的字段,entity的賦值和前篇創建時候的一樣的。
var entity = {};entity["name"] = '測試更新';//文本entity["new_gender"] = 100000001;//選項集entity["new_birth"] = new Date();//日期entity["new_testid@odata.bind"] = "/new_tests(55579B39-39E7-E511-9414-ADA183AB6249)";//lookupentity["new_bool"] = false;//boolentity["revenue"] = 255;//貨幣var jsonEntity = window.JSON.stringify(entity);var id="D1E50347-86EB-E511-9414-ADA183AB6249";$.ajax({async: false,type: "PATCH",contentType: "application/json; charset=utf-8",datatype: "json",data: jsonEntity,url: Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts(" + id.replace('{', '').replace('}', '') + ")",success: function (data, textStatus, XmlHttpRequest) {if (XmlHttpRequest.status=='204') {alert('更新成功');}},error: function (XmlHttpRequest, textStatus, errorThrown) { }});下面兩張圖是更新前后的對比
? ? ? 新的更新操作的API幾個需要注意的地方:
? ? ? 1、這里的請求type是patch了還不是post
? ? ? 2、這里的返回狀態值為204即為更新成功,沒有返回值
? ? ? 3、有一種方式的更新要注意,比如你先retrieve出了一個實體的所有屬性,然后更改查詢出來的entity里的某幾個屬性字段,再直接把這個entity request出去的話,那對于這個entity里的某些字段的內容沒有做過更改系統也進行更新,最直接的體會就是在審核日志中的update記錄中有這些字段更新記錄(但實際你并沒有更改字段內容),所以更新時最好new一個entity出來再進行復制。
以下是上述第三點講到的sdk中的原文說明
? ? 4、前面給出的是一個基本的update代碼,一旦你要更新的記錄在系統中不存在,執行上面那段代碼直接update會出問題,request請求就不是update一條記錄而變成create一條記錄了,所以要在請求header中加這么一段setRequestHeader("If-Match", "*"),這樣執行后會報404,記錄不存在。
? ??再者如果我就想用上述代碼來創建一條記錄,那你要校驗啊,我給定的這個guid在系統中不存在我才創建,所以要在header中加這么一段setRequestHeader("If-None-Match", "*"),一旦存在就拋錯不創建了。
轉載于:https://www.cnblogs.com/cl1024cl/p/6205827.html
總結
以上是生活随笔為你收集整理的Dynamics CRM2016 Web API之更新记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle全托管驱动Oracle.Ma
- 下一篇: 深入了解asp.net框架。生命周期以及