zoukankan      html  css  js  c++  java
  • Dynamic 级联查询

    级联查询,即为在一次查询请求中把父子记录统统查询出来的行为。使用Web API进行这样的查询非常的方便,主需要在OData Query URL中加入$expand关键字即可,不管在轻客户端或重客户端,调用都非常的方便。

    /api/data/v8.2/accounts(79309b7b-8bac-e611-80f9-1458d05a2ab0)?$expand=contact_customer_accounts($select=fullname)

     

    $expand关键字后面加上父子记录的关系名称,在这里,我们还可以在关系名称里面加上子记录的投影,决定哪些列可以被返回。在很多情况下,我们能在一次请求中获取所有的数据。如果子记录非常的多,系统会返回子记录的检索URL,我们通过访问这个URL才能获取完整的子记录。 具体情况,可以参考下面的C# 调用代码:

    var accountUri = crtResp.Headers.GetValues("OData-EntityId").FirstOrDefault();
                    HttpRequestMessage retReq = new HttpRequestMessage(HttpMethod.Get, string.Format("{0}?$expand=contact_customer_accounts($select=fullname)",accountUri));
                    HttpResponseMessage retResp = await _client.SendAsync(retReq);
                    if (retResp.IsSuccessStatusCode)
                    {
                        var result = JsonConvert.DeserializeObject<JObject>(await retResp.Content.ReadAsStringAsync());
                        if (result != null && result["contact_customer_accounts@odata.nextLink"] != null)
                        {
                            HttpRequestMessage retChdReq = new HttpRequestMessage(HttpMethod.Get, result["contact_customer_accounts@odata.nextLink"].Value<string>());
                            HttpResponseMessage retChdResp = await _client.SendAsync(retChdReq);
     
                            return retChdResp.IsSuccessStatusCode;
                        }
                        else if (result != null && result["contact_customer_accounts"] != null)
                        {
                            return true;
                        }
                    }
  • 相关阅读:
    Linux开机自动启动ORACLE设置
    linux下查找过滤文件内容
    weblogic 修改控制台访问路径
    ASM实例挂载磁盘失败错误日志
    weblogic服务器下一个domain建多个server(端口)
    Oracle Profile
    codeforces_724C_Ray Tracing
    struts2_validate表单验证
    struts2.5.2 通配符问题_亲测有用
    hibernate+struts2
  • 原文地址:https://www.cnblogs.com/LanHai12/p/15257986.html
Copyright © 2011-2022 走看看