簡體   English   中英

從OData返回單個實體 - .Net

[英]Return a single entity from OData - .Net

我需要在OData服務上執行請求,該服務將檢索單個實體,並且應該如下所示: / EntitySet(par1 = value1,...,parn = valuen)

但是,我的LINQ生成的用於獲取條目的查詢如下所示: / EntitySet()?$ filter =(par1 eq value1)和(par2 eq value2)和...(parn eq valuen)

這當然是有效的。 但是服務器不允許它。 它只與第一個選項一致,即括號中的標准選項。

有什么我可以做的嗎? 手動創建查詢URL會很遺憾......

這是代碼:

        var context = new CHART_SRV_Entities(oDataUri);

        var query = context.ApplicationData.Where(ad =>
            ad.institution == "1" &&
            ad.patientId == "2000118" &&
            ad.caseId == "2488");

        DataServiceCollection<ApplicationData> data = new DataServiceCollection<ApplicationData>(context);

        data.LoadCompleted += (s, args) =>
            {
                if (args.Error == null)
                {
                    if (data.Continuation != null)
                    {
                        data.LoadNextPartialSetAsync();
                    }
                    else
                    {
                        var result = data;
                    }
                }
                else
                {
                    MessageBox.Show(args.Error.Message);
                }
            };

        data.LoadAsync(query);

更新: 這里使用CreateQuery實現了“括號請求”。 但是,那是同步通話。 有關如何使其異步的任何想法?

Update2:似乎我正在嘗試實現的是OData復合鍵查找。 有這個OData庫可以做到這一點,但我發現很難相信這不能用Microsoft工具集完成。

在實體集名稱后,只允許在括號中顯示關鍵屬性。 如果您使用非鍵屬性來查找條目,則必須使用過濾器。 這就是客戶端的工作方式,也是正確的行為。

在您的情況下,如果可以,我建議您自定義客戶端代碼或更新服務代碼以支持過濾器。

暫無
暫無

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

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