Программное создание OData Proxy

Доступна служба OData с использованием служб данных WCF (службы данных ADO.NET). Мне нужно использовать службу OData программным способом. В смысле не хочу использовать DataSvcUtil для создания прокси. Вместо этого во время выполнения мне нужно создать прокси-сервер OData.

Для WSDL можно создать прокси-сервер с помощью CodeDOM и System.ServiceModel.Discovery.

Мне любопытно узнать, есть ли программный способ создания прокси-сервера OData.

Спасибо


person Venki    schedule 21.08.2010    source источник


Ответы (1)


DataSvcUtil использует этот класс http://msdn.microsoft.com/en-us/library/system.data.services.design.entityclassgenerator_members.aspx для создания кода. Так что вы можете сделать то же самое. Как только вы сгенерируете исходный код, вызовите на нем компилятор (я думаю, что CodeDOM тоже может это сделать) и загрузите полученную dll. Для этого требуется XmlReader, поэтому вам придется создать XmlReader из конечной точки $metadata вашей службы, но это довольно просто.

person Vitek Karas MSFT    schedule 24.08.2010
comment
Черт! Я был так близок к тому, чтобы заставить это работать, но кажется, что EntityClassGenerator не генерирует типы сущностей, которые реализуют INotifyPropertyChanged, которые мне нужны, чтобы иметь возможность использовать прокси в моем приложении. Не вижу никаких параметров конфигурации в EntityClassGenerator. - person lesscode; 21.06.2012
comment
Вы пытались установить EntityClassGenerator.UseDataServiceCollection=true? Он включает привязку данных к сгенерированным классам, частью которых должна быть реализация INotifyPropertyChanged. - person Vitek Karas MSFT; 21.06.2012
comment
Да, спасибо. Я нашел его через несколько минут после публикации — название этого свойства ввело меня в заблуждение... Мой клиент службы динамических данных теперь отлично работает с очень небольшим количеством кода. Спасибо за оригинальный совет! - person lesscode; 21.06.2012
comment
Уважаемый Уэйн, у вас есть какой-нибудь пример кода, которым вы хотели бы поделиться, для выполнения клиента службы динамических данных? - person LiQuick.net; 25.04.2016