ano*_*stu 5 .net c# linq odata
我需要对 OData 服务执行一个请求,该请求将检索单个实体,该请求应如下所示:\n /EntitySet(par1=value1,\xe2\x80\xa6,parn=valuen)
\n\n但是,我的 LINQ 生成的用于获取条目的查询如下所示:\n /EntitySet()?$filter=(par1 eq value1) and (par2 eq value2) and ... (parn eq valuen)
\n\n这当然是有效的。但服务器不允许。它只同意第一个选项,即带有括号中的标准的选项。
\n\n有什么我可以做的吗?手动创建查询 URL 会很遗憾...
\n\n这是代码:
\n\n var context = new CHART_SRV_Entities(oDataUri);\n\n var query = context.ApplicationData.Where(ad =>\n ad.institution == "1" &&\n ad.patientId == "2000118" &&\n ad.caseId == "2488");\n\n DataServiceCollection<ApplicationData> data = new DataServiceCollection<ApplicationData>(context);\n\n data.LoadCompleted += (s, args) =>\n {\n if (args.Error == null)\n {\n if (data.Continuation != null)\n {\n data.LoadNextPartialSetAsync();\n }\n else\n {\n var result = data;\n }\n }\n else\n {\n MessageBox.Show(args.Error.Message);\n }\n };\n\n data.LoadAsync(query);\nRun Code Online (Sandbox Code Playgroud)\n\n更新: “括号请求”是通过 CreateQuery 实现的。然而,这是一个同步调用。关于如何使其异步的任何想法?
\n\nUpdate2:似乎我想要实现的是 OData 复合键查找。有一个OData 库可以做到这一点,但我很难相信这不能用 Microsoft 工具集来完成。
\n小智 2
仅允许关键属性出现在实体集名称后面的括号中。如果您使用非键属性来查找条目,则必须使用过滤器。这就是客户端的工作方式,也是正确的行为。
对于您的情况,如果可以的话,我建议您自定义客户端代码或更新服务代码以支持过滤器。
| 归档时间: |
|
| 查看次数: |
1926 次 |
| 最近记录: |