我目前正在編寫基於WCF Dataservices Toolkit的OData服務。WCF數據服務(OData) - 使用外鍵擴展導航屬性
有幾個對象是由服務公開的,下面列出了一個例子。
public class Entitlement : IEntity
{
#region Implementation of IEntity
public string Id { get; set; }
#endregion
public string ItemId { get; set; }
[ForeignProperty]
public Item Item { get; set; }
}
public class Item : IEntity
{
#region Implementation of IEntity
public string Id { get; set; }
#endregion
public string ItemName { get; set; }
}
由於從2個獨立的數據源檢索的數據I只想的項的ID存儲在權利對象,而不是整個Item對象。
這適用於諸如:Entitlement('1')/ Item之類的查詢,服務理解它需要使用ItemId來執行查找。
然而,當我嘗試使用下面的URL 權利(「1」)展開項目?$擴張出現問題=項目
項目總回來爲空,我明白,這是因爲我我沒有在權利對象上存儲Item,但是無論如何,我可以強制OData以對待投影的方式來對待擴展語句?
我試過Entitlement('1')?$ select = Item,但是這也會返回爲null。
任何建議將不勝感激。
嗨@dthorpe問題實際上在於我們沒有使用SQL和實體框架。由於數據必須在運行時解決,因此我們需要攔截入站請求並手動獲取額外數據。或者我們需要重寫表達式樹並手動添加展開包裝,以便它將被我們的自定義提供程序拾取。 – SCB