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