Недавно я взялся за проект по созданию инструмента для LinqPad, который будет выгружать результаты запросов в формат CSV, чтобы использовать этот инструмент в больших базах данных для получения быстрых результатов. Одна вещь, которую я хотел от этого инструмента, это чтобы он мог работать в Visual Studio и LinqPad. Таким образом, если бы я использовал LinqtoSQL в VS2010 или LinqPad, я мог бы быстро вывести результаты в CSV-файл, а затем открыть его в Excel для просмотра результатов.
Самый большой сбой в проекте возник из-за того, как LinqPad строит свои DataContexts по сравнению с тем, как Visual Studio строит свои DataContexts. Лучшая информация о том, как работает LinqPad, взята из здесь. В основном то, что я обнаружил в своем проекте, заключалось в том, что VS2010 создает свойства для своих контекстов данных, а LinqPad создает поля. Таким образом, при использовании отражения:
Линкпад:
dataContextType.GetProperties() //returns 0
dataContextType.GetFields() //returns the Fields from LinqPad created DataContext
VS 2010 LinqToSQL:
dataContextType.GetProperties() //returns the Properties from VS created DataContext
dataContextType.GetFields() //returns 0
Так почему же LinqPad использует поля вместо свойств в своих контекстах данных? Не было бы более целесообразным скопировать шаблон Visual Studio LinqToSQL?
Обновить
Основываясь на комментарии, я решил задать тот же вопрос в форум LinqPad.