Инструменты 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
Чтобы добавить модель сущности LINQ to SQL в проект, выберите Project>добавить новый элемент, а затем выберите классы LINQ to SQL из списка элементов проекта:
Visual Studio создает файл .dbml
и добавляет его в решение. Это XML-файл сопоставления и связанные с ним файлы кода.
При выборе файла
Важный
конструктора операций ввода-вывода — это простой реляционный сопоставитель объектов, так как он поддерживает только связи сопоставления 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 создаются в пространстве имен приложения. Чтобы сгенерировать код в пространство имен, отличное от пространства имен приложения, введите значение в свойство пространства имен контекста и/или свойство пространства имен сущности.
Справочные материалы
См. также
- LINQ to SQL (.NET Framework)
- часто задаваемые вопросы (.NET Framework)