我有Odata服务,公开“StartAction”服务操作。此操作返回ActionResponse实体
<EntityType Name="ActionResponse">
<Key>
<PropertyRef Name="FolderId" />
</Key>
<Property Name="FolderId" Type="Edm.String" Nullable="false" />
<Property Name="ClientData" Type="Edm.String" Nullable="true" />
<Property Name="ProcessCaption" Type="Edm.String" Nullable="true" />
<Property Name="ProcessName" Type="Edm.String" Nullable="true" />
<Property Name="ProjectName" Type="Edm.String" Nullable="true" />
<Property Name="ProjectVersion" Type="Edm.Int32" Nullable="false" />
<Property Name="ServerData" Type="Edm.String" Nullable="true" />
<Property Name="StageName" Type="Edm.String" Nullable="true" />
<Property Name="UserName" Type="Edm.String" Nullable="true" />
<NavigationProperty Name="Action" Relationship="Metastorm.EngineData.ActionResponse_Action_Action_ActionResponse" FromRole="ActionResponse_Action" ToRole="Action_ActionResponse" />
</EntityType>
<Association Name="ActionResponse_Action_Action_ActionResponse">
<End Role="ActionResponse_Action" Type="Metastorm.EngineData.ActionResponse" Multiplicity="0..1" />
<End Role="Action_ActionResponse" Type="Metastorm.EngineData.Action" Multiplicity="0..1" />
</Association>
当我尝试$扩展Action导航属性时,我收到以下错误:
Query options $expand, $filter, $orderby, $inlinecount, $skip and $top cannot be applied to the requested resource
如果我只用一个项目返回IQueryable,我可以解决它,但看起来很难看。有没有人知道如何让$ expand扩展为返回单个实体的Service Operations工作?
提前致谢
P.S。该服务具有自定义实现
答案 0 :(得分:2)
服务操作必须返回IQueryable才能使任何其他查询选项起作用(这是必要的,因为WCF DS需要IQueryable来构造其他查询选项的表达式)。 返回一个带有单个结果的IQueryable是完全没问题的。在服务操作方法上添加[SingleResult]属性,让WCF DS知道IQueryable只返回一个值(以便查询选项的行为相应)。