0
成員,我有$expand
第一個問題:
此工程 - >api/Components('XYZ')/Childs
這不 - >api/Components('XYZ')?$expand=Childs
我已經使用的EntityFramework( 6.1.3)映射數據庫中的視圖(只讀),然後基於EF實體創建OData v3控制器。它適用於大多數表格,但是當實體之間的關係不是基於導航屬性而是LINQ查詢時會出現問題。
下面是代碼示例:
public class ComponentsController : ODataController
{
....
[EnableQuery]
public IQueryable<Component> GetChilds([FromODataUri] string key)
{
var id = db.Components.First(c => c.Id == key).Identity;
return db.ChildComponents.Where(cc => cc.Identity == id).Select(cc => cc.Component);
}
什麼我不明白的是爲什麼我不能使用$expand=Childs
當(...)/Childs
正常工作?
EDIT1:
這裏是$元數據 - 導航屬性「用戶」與$作品擴張,但「童車」別:
<EntityType Name="Component">
<Key>
<PropertyRef Name="Id"/>
</Key>
<Property Name="Id" Type="Edm.String" Nullable="false"/>
<Property Name="Type" Type="Edm.String"/>
<Property Name="Name" Type="Edm.String"/>
<Property Name="Identity" Type="Edm.String"/>
<NavigationProperty Name="Users" Relationship="HostingDb.Pandora.HostingDb_Pandora_Component_Users_HostingDb_Pandora_ComponentUser_UsersPartner" ToRole="Users" FromRole="UsersPartner"/>
<NavigationProperty Name="Childs" Relationship="HostingDb.Pandora.HostingDb_Pandora_Component_Childs_HostingDb_Pandora_Component_ChildsPartner" ToRole="Childs" FromRole="ChildsPartner"/>
</EntityType>
<Association Name="HostingDb_Pandora_Component_Users_HostingDb_Pandora_ComponentUser_UsersPartner">
<End Type="HostingDb.Pandora.ComponentUser" Role="Users" Multiplicity="*"/>
<End Type="HostingDb.Pandora.Component" Role="UsersPartner" Multiplicity="0..1"/>
</Association>
<Association Name="HostingDb_Pandora_Component_Childs_HostingDb_Pandora_Component_ChildsPartner">
<End Type="HostingDb.Pandora.Component" Role="Childs" Multiplicity="*"/>
<End Type="HostingDb.Pandora.Component" Role="ChildsPartner" Multiplicity="0..1"/>
</Association>
很奇怪$ expand已經被支持。你能否顯示元數據? –
@SamXu我已經添加了元數據 – micmax93
使用mvc api ....你如何使用它,angularjs?即什麼是調用GetChilds ....什麼是js的樣子。 – Seabizkit