Программирование arrow LINQ arrow LINQtoSQL: Модификация в соответствии с требованиями код, генерируемый конструктором
-->

LINQtoSQL: Модификация в соответствии с требованиями код, генерируемый конструктором

Оглавление

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

Введение

LINQ to SQL используется для работы с данными на сервере баз данных SQL. Visual Studio поставляется с проектировщиком LINQtoSQL, который является мощным инструментом для генерирования LINQ. Он быстрый, простой в использовании, и имеет много других положительных сторон.

Хотя есть и недостаток. Вы не можете изменить сгенерированный код. Как и все другие проектировщики, он работает, в нем легко запустить демонстрационную программу, но когда вы оказываетесь в реальных жизненных ситуациях, вы всегда хотите немного большего. Это большее всегда связано с какой-то проблемой. Поэтому мы не будем пытаться создать лучший код LINQ to SQL. Мы просто покажем вам, как изменить и обогатить сгенерированный код за считанные минуты. Изменение в соответствии с требованиями пользователя полностью прозрачно для стандартного проектировщика LINQtoSQL, и вы по-прежнему сможете использовать его для моделирования классов и доступа к данным.

Краткие пояснения

Можно разбить задачу на три сценария, зависящие от того, насколько отличается желаемый сгенерированный код от того, который генерирует LINQtoSQL. Каждый сценарий будет подробно обсуждаться ниже, и будет реализован на основе бесплатного средства Visual Studio, называемого Reegenerator.

С помощью этого средства вы определяете в решении отдельный проект, который содержит сгенерированный код, не являющийся частью текущего варианта программы. Затем вы присоединяете элементы проекта LINQtoSQL (.dbml) к классам сгенерированного кода, определенным в этом проекте. Когда вы используете проектировщик LINQtoSQL и сохраняете файл, генерация кода будет вызвана автоматически, чтобы создать .Designer.cs, который зависим от файла DBML.

Использование кода

Загрузите файл архива по адресу. Вам понадобятся установленные Visual Studio 2008 и Reegenerator. Извлеките файлы из архива и загрузите файл решения в Visual Studio. Решение содержит проект, названный CustomizeDesigners, который содержит генераторы кода, и проект под названием Business, содержащий файлы DBML и базу данных, которая используется в качестве источника для проектировщика LINQtoSQL. В обоих проектах Business и RenderersLibrary  есть три папки Scenario (сценарий), которые содержат DBML и генераторы кода для каждого сценария, как описано ниже.

Чтобы запустить генерацию кода, вам нужно отредактировать и сохранить файл DBML, или щелкнуть на нем правой кнопкой мыши и вызвать "Запуск клиентского инструментария" ("Run Custom Tool"). Для отладки нужно задать точку останова в коде генератора кода в проекте RenderersLibrary и запустить сеанс отладки. Сеанс вызовет второй экземпляр Visual Studio. Загрузите то же самое решение во второй экземпляр и запустите генерацию кода, сохранив файл DBML. Сгенерированный код будет сохранен как элемент проекта (обычно ".Designer.cs"), зависимый от файла DBML. Необходимо щелкнуть мышкой на значке с изображением плюса, расположенном с левой стороны элемента проекта DBML, чтобы раскрыть список его потомков.

Чтобы проверить, к чему присоединен элемент проекта DBML, щелкните на нем правой кнопкой мыши и нажмите на "Attach Renderers (присоединенные рендереры)...".

Рисунок ниже показывает, как будет выглядеть ваша рабочая среда:

LINQtoSQL: Модификация в соответствии с требованиями код, генерируемый конструктором - LINQ - Microsoft .NET - Программирование, исходники, операционные системы


 
Следующая статья »


  • LINQ, Библиотека LINQ to CSV
    Простая в использовании библиотека для использования CSV и файлов с разделителями табуляции с запросами LINQ....
  • LINQ, Синхронизатор баз данных LINQ to SQL
    Инструмент LINQ to SQL Database Synchronizer (csdb.exe) предоставляет синхронизацию структур баз данных из модели LINQ to SQL. Он поддерживает как создание новых баз данных,так и обновление существующих. Важно заметить то, что данный инструмент никогда не удаляет данные или структуру - он просто добавляет отсутствующие таблицы, колонки и индексы, а также модифицирует существующие колонки....
  • LINQ, Привязка ElementName в Silverlight посредством прикрепленных поведений
    Если вы новичок и не знакомы Silverlight, то вам все же может показаться все не таким сложным, когда вы начнете разработку. Удивительно легко выполнить переход от WPF к Silverlight, при этом большинство основных принципов будут такими же. Тем не менее, существуют некоторые части WPF-структуры, которые вам будет не хватать. Одной из них является привязка ElementName....
  • LINQ, LINQ to SQL - отношения «многие ко многим»
    Отношение "многие ко многим" является двунаправленным между двумя сущностями, разрешенное посредством перекрестной таблицы с отношением типа "один ко многим" к каждой из сущностей. Большинство разработчиков считают отношение "многие ко многим" нестандартным для моделирования баз данных. Тем не менее, LINQ to SQL не предоставляет поддержку данных типов отношений, а PLINQO позволяет простоту в работе с такими отношениями. Мы ...
  • LINQ, LINQ to SQL - отделение сущностей при помощи Detach
    Как же использовать разъединённые сущности с LINQ to SQL? Каждый разработчик, который использует LINQ to SQL, задавался таким вопросом. Где же их разъединить? Как же использовать данные сущности с сервисами, JSON, инкапсуляцией и в контексте многокомпонентных данных? Все они являются здравыми вопросами при составлении структуры. По умолчанию, LINQ to SQL не торопится разъединять данные сущности и не видит причины, почему они должны быть отделены от его контекста. Место под правое меню