Как LinqPad поддерживает службы данных WCF?

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

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

Любая обратная связь приветствуется.

Ин


person Ying    schedule 25.05.2010    source источник


Ответы (2)


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

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

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

person Buu Nguyen    schedule 16.06.2010
comment
Обновлена ​​ссылка для первого: msdn.microsoft. com/en-us/library/ (также буква 'r' не связана, что сводит меня с ума каждый раз, когда я смотрю на нее... :D). - person James Skemp; 04.01.2011

Я почти уверен, что LinqPad генерирует классы, как вы предложили, но я не видел исходного кода. Но если вас интересует исходный код чего-то подобного, взгляните на проводник OData: https://docs.microsoft.com/en-us/archive/blogs/phaniraj/announcing-the-odata.-explorer

person Vitek Karas MSFT    schedule 11.06.2010