Как LinqPad поддерживает службы данных WCF? - PullRequest
3 голосов
/ 25 мая 2010

LinqPad поддерживает службы данных WCF. Если вы назначите URL-адрес, например http://services.odata.org/Northwind/Northwind.svc/., в нем будут перечислены все доступные объекты данных, и вы сможете запросить их. Я предполагаю, что LinqPad генерирует все доступные классы данных во время выполнения с помощью отражения.

Мне интересно, кто может показать мне, как это сделать. Или, может быть, кто-то делал это раньше.

Любые отзывы приветствуются.

Ин

Ответы [ 2 ]

2 голосов
/ 16 июня 2010

Вот что я получил после проверки кода с помощью Reflector:

LinqPad использует встроенный класс EntityClassGenerator для генерации кода, а затем компилирует его с помощью CSharpCodeProvider . Отражение Emit не используется. (В случае LINQ-2-SQL он использует отражение emit для генерации кода.)

Что касается инструмента ODataExplorer, предложенного Vitek, похоже, он вообще не генерирует код. В этом нет необходимости, поскольку все взаимодействия между ним и службой осуществляются через REST API, а не через LINQ. Поэтому не требуется строго типизированный контекст данных.

0 голосов
/ 11 июня 2010

Я почти уверен, что LinqPad генерирует классы, как вы предложили, но я не видел исходного кода. Но если вас интересует исходный код для чего-то подобного, взгляните на OData explorer: http://blogs.msdn.com/b/phaniraj/archive/2010/03/17/announcing-the-odata-explorer.aspx

...