Поделиться через


Инструменты LINQ to SQL в Visual Studio

LINQ to SQL — первая технология сопоставления объектов, выпущенная корпорацией Майкрософт. Он хорошо работает в основных сценариях и продолжает поддерживаться в Visual Studio, но он больше не находится в активной разработке. Используйте LINQ to SQL при обслуживании устаревшего приложения, которое уже использует его, или в простых приложениях, использующих SQL Server и не требующих сопоставления нескольких таблиц. Как правило, новые приложения должны использовать Entity Framework, если требуется уровень объектно-реляционной модели.

Установка средств LINQ to SQL

В Visual Studio вы создаете классы LINQ to SQL, представляющие таблицы SQL с помощью конструктора реляционных объектов (конструктора O/R). Редактор O/R — это пользовательский интерфейс для редактирования файлов .dbml. Для редактирования .dbml файлов с помощью области конструктора требуются средства LINQ to SQL, которые по умолчанию не устанавливаются в рамках любой рабочей нагрузки Visual Studio.

Чтобы установить средства LINQ to SQL, запустите установщик Visual Studio, выберите Изменить, а затем перейдите на вкладку отдельные компоненты, а затем выберите средства LINQ to SQL в категории Code Tools.

Что такое конструктор операций ввода-вывода

В конструкторе O/R есть две отдельные области: область сущностей слева и область методов справа. Область сущностей — это основная область конструктора, которая отображает классы сущностей, ассоциации и иерархии наследования. Область методов — это область конструктора, которая отображает методы DataContext, сопоставленные с хранимыми процедурами и функциями.

конструктор O/R предоставляет визуальную среду для проектирования и создания классов сущностей и ассоциаций LINQ to SQL, основанных на объектах в базе данных. Другими словами, O/R конструктора создает объектную модель в приложении, которая сопоставляется с объектами в базе данных. Он также создает строго типизированный DataContext, который обеспечивает отправку и получение данных между классами сущностей и базой данных. O/R Designer также предоставляет функциональность для сопоставления хранимых процедур и функций с методами DataContext для возвращения данных и заполнения классов сущностей. Наконец, O/R Designer позволяет проектировать наследственные отношения между классами сущностей.

Откройте конструктор O/R

Чтобы добавить модель сущности LINQ to SQL в проект, выберите Project>добавить новый элемент, а затем выберите классы LINQ to SQL из списка элементов проекта:

снимок экрана, показывающий классы LINQ to SQL.

Visual Studio создает файл .dbml и добавляет его в решение. Это XML-файл сопоставления и связанные с ним файлы кода.

снимок экрана: классы LINQ to SQL в обозревателе решений.

При выборе файла .dbml Visual Studio отображает область конструктора O/R, которая позволяет визуально создать модель. На следующем рисунке показан конструктор после перетаскивания таблиц Northwind Customers и Orders из обозревателя серверов. Обратите внимание на связь между таблицами.

снимок экрана: конструктор LINQ to SQL.

Важный

конструктора операций ввода-вывода — это простой реляционный сопоставитель объектов, так как он поддерживает только связи сопоставления 1:1. Другими словами, класс сущностей может иметь только связь сопоставления 1:1 с таблицей базы данных или представлением. Сложное сопоставление, например сопоставление класса сущностей с присоединенной таблицей, не поддерживается; используйте Entity Framework для сложного сопоставления. Кроме того, проектировщик — это односторонний генератор кода. Это означает, что в файле кода отражаются только изменения, внесенные в область конструктора. Изменения, внесённые вручную в файл кода, не отражаются в конструкторе O/R. Все изменения, внесенные вручную в файле кода, перезаписываются при сохранении конструктора и повторном создании кода. Для получения информации о том, как добавить пользовательский код и расширить классы, создаваемые конструктором O/R, см. раздел Практическое руководство: Расширение кода, созданного конструктором O/R.

Создание и настройка DataContext

После добавления элемента классов LINQ to SQL в проект и открытия дизайнера O/R, пустая область конструктора представляет пустую DataContext, готовую к настройке. DataContext настраивается с данными о подключении, предоставленными первым элементом, перетаскиваемым на поверхность конструктора. Таким образом, DataContext настраивается с помощью сведений о подключении из первого элемента, который сбрасывается на поверхность дизайна. Дополнительные сведения о классе DataContext см. в разделе "Методы DataContext (Конструктор O/R)".

Создание классов сущностей, сопоставленных с таблицами и представлениями базы данных

Вы можете создавать классы сущностей, сопоставленные с таблицами и представлениями, перетаскивая таблицы и представления из обозревателя серверов или обозревателя баз данных в O/R проектировщик . Как указано в предыдущем разделе, DataContext настраивается с информацией о подключении, предоставленной первым элементом, который перетаскивается на конструкторскую поверхность. Если к добавляется последующий элемент, использующий другое подключение, в конструктор O/R, вы можете изменить подключение для DataContext. Дополнительные сведения см. в статье Как создать классы LINQ to SQL, сопоставленные с таблицами и представлениями (конструктор O/R).

Создание методов DataContext, вызывающих хранимые процедуры и функции

Вы можете создать методы DataContext, которые вызывают хранимые процедуры и функции, перетаскивая их из обозревателя серверов или обозревателя баз данных на объектно-реляционный дизайнер. Хранимые процедуры и функции добавляются в O/R Дизайнер как методы DataContext.

Заметка

При перетаскивании хранимых процедур и функций из обозревателя серверов или обозревателя баз данных на конструктор O/Rвозвращаемый тип созданного метода DataContext отличается в зависимости от места, куда вы помещаете элемент. Дополнительные сведения см. в методах DataContext (конструктор O/R) .

Настройка DataContext для использования хранимых процедур для сохранения данных между классами сущностей и базой данных

Как упоминалось ранее, можно создать методы DataContext, которые вызывают хранимые процедуры и функции. Кроме того, можно также назначить хранимые процедуры, используемые для поведения во время выполнения LINQ to SQL по умолчанию, который выполняет вставки, обновления и удаления. Дополнительные сведения см. в разделе Практическое руководство. Назначение хранимых процедур для выполнения обновлений, вставок и удалений (конструктор операций ввода-вывода).

Наследование и O/R-дизайнер

Как и другие объекты, классы LINQ to SQL могут использовать наследование и быть производными от других классов. В базе данных отношения наследования создаются несколькими способами. Конструктор O/R поддерживает концепцию наследования одной таблицы, как это обычно бывает в реляционных базах данных. Дополнительные сведения см. в разделе Практическое руководство. Настройка наследования с помощьюконструктора операций ввода-вывода.

Запросы LINQ to SQL

Классы сущностей, создаваемые конструктором O/R, предназначены для использования с языком интегрированных запросов (LINQ). Дополнительные сведения см. в разделе Практическое руководство. Запрос сведений.

Разделите сгенерированный код DataContext и классов сущностей по разным пространствам имен.

Конструктор O/R предоставляет свойства пространства имен контекста и пространства имен сущностей в DataContext. Эти свойства определяют пространство имен, в которое генерируется код класса DataContext и кода сущности. По умолчанию эти свойства пусты, а классы сущностей и DataContext создаются в пространстве имен приложения. Чтобы сгенерировать код в пространство имен, отличное от пространства имен приложения, введите значение в свойства пространство имен контекста и/или пространство имен сущности.

Справочные материалы

См. также