簡體   English   中英

c# OdataClient:DataServiceActionQuery,如何執行Microsoft Dynamics 365 Business Central 的功能?

[英]c# OdataClient: DataServiceActionQuery, how to execute a function Microsoft Dynamics 365 Business Central?

我一直在嘗試從 Microsoft 的 odata 客戶端運行 NAV 功能(Microsoft Dynamics 365 Business Central)。 當我創建一個 odatav4 數據源並導入$metadata 時,我能夠在自動生成的代碼中包含 codeunits 函數,這為我創建了一個 DataServiceActionQuery 類型:

 /// <summary>
 /// There are no comments for Funcions_TestFunction in the schema.
 /// </summary>
 [global::Microsoft.OData.Client.OriginalNameAttribute("Funcions_TestFunction")]
 public virtual global::Microsoft.OData.Client.DataServiceActionQuery Funcions_TestFunction(string param1, string param2, string param3)
    {
        return new global::Microsoft.OData.Client.DataServiceActionQuery(this, this.BaseUri.OriginalString.Trim('/') + "/Funcions_TestFunction", new global::Microsoft.OData.Client.BodyOperationParameter("param1", param1),
                new global::Microsoft.OData.Client.BodyOperationParameter("param2", param2),
                new global::Microsoft.OData.Client.BodyOperationParameter("param3", param3));
    }

當我嘗試運行它時,我必須將公司代碼傳遞給它,但我不知道該怎么做:

 Uri texte = new Uri(@"http://192.168.0.18:18148/Instancename/ODataV4/");
 NAV.NAV x = new NAV.NAV(texte);
 x.Credentials = credentials;
 DataServiceActionQuery funcionini = x.Funcions_TestFunction(param1, param2, param3);
 funcionini.Execute();

使用 DataServiceQuery (已發布的頁面)我沒有問題可以通過它,只需添加查詢選項:

 DataServiceQuery<NAV.Customer> z = x.Customer.AddQueryOption("company", "Mycompany");
 IEnumerable<NAV.Customer> resultat = z.Where(f => f.Type == "something").OrderBy(f => f.Name);//.GetAllPages();

郵遞員示例(最后您可以看到 url 參數: ?company=mycompany 郵遞員的樣品

  1. 最簡單的方法:在 URL 中放置"MyCompany"公司:
Uri texte = new Uri(@"http://192.168.0.18:18148/Instancename/ODataV4/Company(MyCompany)");
  1. 更優雅:將公司標頭添加到每個 NAV 請求中。 我更喜歡 EventHandler BuildingRequest來做到這一點:
NAV.BuildingRequest += (_, e) => e.Headers.Add("company", "MyCompany");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM