[英]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.