2010-08-21 30 views
3

有OData服務使用WCF數據服務(ADO.NET數據服務)可用。 我需要以編程方式使用OData服務。從某種意義上說,我不想使用DataSvcUtil來創建代理。相反在運行時我需要生成OData代理。OData代理的編程式生成

對於WSDL,可以使用CodeDOM和System.ServiceModel.Discovery生成代理。

我很想知道是否有任何生成OData代理的程序化方式。

感謝

回答

6

DataSvcUtil使用這個類http://msdn.microsoft.com/en-us/library/system.data.services.design.entityclassgenerator_members.aspx生成代碼。所以你可以做同樣的事情。生成源代碼後,調用一個編譯器(我認爲CodeDOM也可以這樣做)並加載結果dll。 它需要一個XmlReader,所以你將不得不從服務的$ metadata enpoint創建一個XmlReader,但這很簡單。

+0

該死!我非常接近這個工作,但似乎EntityClassGenerator不會生成實現INotifyPropertyChanged的實體類型,這是我需要的,以便能夠在我的應用程序中使用代理。在EntityClassGenerator上看不到任何配置選項。 – lesscode 2012-06-20 20:20:42

+1

您是否嘗試設置EntityClassGenerator.UseDataServiceCollection = true?它支持在生成的類上進行數據綁定,其中一部分應該是實現INotifyPropertyChanged。 – 2012-06-21 09:14:51

+0

是的,謝謝。我發佈了幾分鐘後 - 該屬性的名稱誤導了我...我的動態數據服務客戶端現在工作很好,只有很少的代碼。感謝您的原始提示! – lesscode 2012-06-21 13:00:51