2012-07-05 17 views
0

我想從一個我不太瞭解的服務中獲取數據。在ODATA中收到元數據。接下來是什麼?

所以我得到了它的URL像 http://ABC.com/ABC.svc

,所以我thouhgt獲得元數據 http://ABC.com/ABC.svc/ $元

它給了我:

<EntityType Name="E1"> 
- <Key> 
<PropertyRef Name="E1k1" /> 
</Key> 
< Property Name="E2" Type="Edm.String" Nullable="true" 
m:FC_TargetPath="SyndicationTitle" ..> 


<ComplexType Name="OptionV1"> 
<Property Name="Value" Type="Edm.Int32" Nullable="true" /> 

... and a lot more. 

我如何找出應該來旁邊ABC.svc/???

我想編寫查詢來訪問數據。 smebody可以指出我下一步應該做什麼? 以及來自元數據的這個查詢生成的任何學習資源都是很有用的。

感謝

回答

1

有兩種方式:

1)使用服務文檔。導航到ABC.svc,它應該返回一個服務文檔,這是一個ATOM服務有效載荷,其中包含可從服務中獲得的實體集的名稱。對於這樣的例子,你可以去http://services.odata.org/OData/OData.svc/。這應該返回一個包含三個集合(實體集合)的文檔。 href屬性是實體集的相對URI(相對於通常爲服務基礎的xml:base)。因此,例如,如果您的服務具有實體集E1Set,那麼通常它的地址將是ABC.svc/E1Set。

2)使用$ metadata文件並假設通常的尋址方案(注意,這通常適用於服務但不必)。 $ metadata文檔將定義實體集。其中的每一個通常都由服務公開,並且通常遵循ABC.svc/EntitySetName的尋址方案。

一旦你導航到實體集,你應該得到一個ATOM提要與該集中的實體。 $元數據將幫助您識別實體和關係的形狀。

某些服務還具有服務操作或操作等。這些未在服務文檔#1中公開。相反,它們只能作爲FunctionImport元素在$ metadata中可見。它們通常遵循ABC.svc/FunctionImportName的尋址方案。但請注意,您可能需要了解有關服務操作的更多信息才能夠調用它(使用何種HTTP謂詞,參數是什麼,它將執行什麼操作等等)。

1

LinqPad爲開始使用OData服務提供了一個非常簡單的方法(假設您熟悉LINQ)。如果你主要是從.NET使用這個應用程序,我建議從這個應用程序開始。您將它指向$元數據端點,它會生成代理類,從而使您能夠像使用純舊的.NET應用程序一樣使用OData服務。在結果日誌選項卡上,它將輸出用於查詢OData服務的URL,然後您可以在Fiddler中找到並調整。 (有關如何使用OData + Fiddler的更多信息,請參閱此博客文章。)

如果您主要使用JavaScript的OData服務,則可能需要先了解URI conventions或通過與data.js

相關問題