Эдвард, мы использовали ряд стратегий при построении примеров LINQ in Action. В главах о базе данных мы часто просто полагались на способность LINQPad автоматически генерировать классы на основе таблиц базы данных.
В случае, если вы ссылаетесь здесь (4.04), мы добавили ссылку на предварительно скомпилированную библиотеку классов, используя F4. Мы использовали эту стратегию в тех случаях, когда LinqPad генерировал классы, отличные от тех, которые были сгенерированы Visual Studio, и, таким образом, приводил к тому, что контекст работал иначе, чем вы ожидаете, особенно в отношении отслеживания изменений.
В других случаях мы добавляли вложенный класс, встроенный в остальную часть примера, и использовали опцию «Программа» в редакторе кода. Смотрите пример 6.02. В этом случае мы фактически внедряем класс Books в сгенерированный класс DataContext, который генерирует LinqPad. Мы также использовали эту стратегию, когда хотели создать псевдонимы имен наших столбцов, поскольку автоматически сгенерированные классы, которые создает LinqPad, не позволяют нам легко создавать псевдонимы этих столбцов внутри инструмента.
В паре примеров, особенно там, где мы демонстрируем пользовательские методы расширения, нам пришлось проделать еще один трюк, чтобы заставить сгенерированный контекстный класс завершить (добавление явно не имеющего конца окончания} или End Class), а затем запустить новый класс, но опуская это закрывающий конец скобка / конец класса. Вы можете увидеть это в примере 2.16 в загруженных примерах.