2011-01-11 73 views
2

我有一個EF4模型,其中包含要從客戶端調用的存儲過程。 服務器代碼看起來是這樣的:從客戶端調用WCF DataService [WebGet]功能

[WebGet]   
public IQueryable<SalesData> GetSalesReport(int reportType, int yr, int m, int d) 
{ 
    DateTime dt = new DateTime(yr, m, d); 
    return this.CurrentDataSource.RP_SalesReport(reportType, dt, dt).AsQueryable<SalesData>(); 
} 

當使用URL「HTTP調用此使用IE://本地主機:12345/MyService.svc/GetSalesReport REPORTTYPE = 1 &年= 2009 & m = 4的& d = 2「它按預期工作。

在我的客戶端應用程序中,我添加了對服務(http:// localhost:12345/MyService.svc)的引用,並且無論我嘗試過什麼,函數「GetSalesReport」都不會顯示在對象瀏覽器中。 (正常EF實體確實出現在對象瀏覽器中)

所以我的問題是:如何從客戶端調用此函數?

是否有區別如何根據客戶端調用此函數(我想從Windows Phone 7 Silverlight應用程序調用此功能,但現在我正在使用WPF測試客戶端進行測試)。

+0

什麼屬性,你已經用這種方法在相關ServiceContract? – 2011-01-12 02:21:59

+0

這是一個ADO.NET數據服務(代號「Astoria」),我唯一的屬性是[WebGet]。據我所知,你不能在ADO.NET數據服務上添加[ServiceContract]。 – Ronny 2011-01-12 08:36:44

回答

5

實際上它看起來像ADO.NET DataTeam沒有實現從客戶端調用ServiceMethod的CodeGen。

所以soloution我的問題是在客戶端寫這個代碼:

 // execute the service operation 
     Uri u = new Uri(string.Format("{0}/GetSalesReport?reportType={1}&yr={2}&m={3}&d={4}", 
         context.BaseUri, 1, 2009, 4, 2),UriKind.RelativeOrAbsolute); 

     var datas = context.Execute<SalesData>(u); 

感謝吉爾芬克說寫這篇博客文章:http://blogs.microsoft.co.il/blogs/gilf/archive/2008/11/14/consuming-data-services-service-operations.aspx