首頁  >  文章  >  後端開發  >  [轉]WebApi OData 的複合鍵

[轉]WebApi OData 的複合鍵

PHP中文网
PHP中文网原創
2017-06-17 16:34:011395瀏覽

文章轉自:http://chris.eldredge.io/blog/2014/04/24/Composite-Keys/

在我們的基本配置中,我們告訴模型建構器我們的實體有一個由 ID 和版本組成的複合鍵:

# 雷雷 雷雷

#這足以讓我們的 OData feed 以如下形式呈現每個單獨實體的 editself 連結:

雷雷

但是,如果我們導航到此 URL,我們將返回整個實體集,而不是僅透過鍵來取得此實體。

為了得到正確的行為,首先我們需要重寫 PackagesODataController,透過鍵取得單一實體實例:

# 雷雷 雷雷
#然而,開箱即用的 WebApi OData 不知道如何將複合鍵參數綁定到此類操作,因為鍵由多個值組成。

我們可以透過建立一個新的路由約定來解決這個問題,該約定將括號內的內容綁定到我們的路由資料映射:

# 雷雷
雷雷
#這個類別裝飾一個標準的
EntityRoutingConvention

並將URI的原始鍵部分分割成鍵/值對,並將它們全部加到routeValues字典中。 一旦完成,標準操作解析就會啟動並找到要呼叫的正確操作重載。 此路由約定改編自 WebApi ODataCompositeKeySample 專案。

這裡我們看到 WebApi OData 和 WCF 資料服務之間的另一個差異。在 WCF 資料服務中,框架負責產生一個查詢,該查詢從

IQueryable

中選擇單一實例。這限制了我們自訂如何透過鍵來尋找實例的能力。在 WebApi OData 中,我們必須明確定義一個重載,透過鍵來取得實體實例,從而使我們能夠更好地控制查詢的執行方式。

這種差異對於大多數專案來說可能並不重要,但就NuGet.Lucene.Web 而言,它支援按需鏡像功能,本地來源可以動態地從另一台伺服器取得包,將其添加到本地儲存庫,然後將其發送回客戶端,就好像它始終存在一樣。

要在 WCF 資料服務中自訂此功能,需要進行大量後空翻。

 ##系列索引

###介紹###

基本 WebApi OData

複合鍵

預設流

     
  1. ##

以上是[轉]WebApi OData 的複合鍵的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn