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


Инструменты 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 также предоставляет функционал для сопоставления хранимых процедур и функций с методами DataContext, которые осуществляют возврат данных и заполнение классов сущностей. Наконец, конструктора O/R предоставляет возможность создавать связи наследования между классами сущностей.

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

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

снимок экрана с классами

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

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

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

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

Важный

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

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

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

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

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

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

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

Заметка

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

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

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

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

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

Запросы LINQ to SQL

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

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

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

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

См. также