Пошаговое руководство. Простая модель объектов и простой запрос (Visual Basic)
В этом пошаговом руководстве представлен базовый комплексный сценарий LINQ to SQL с минимальными сложностями. В нем создается класс сущностей, который моделирует таблицу Customers в учебной базе данных Northwind. После этого создается простой запрос на получение списка клиентов, находящихся в Лондоне.
Это пошаговое руководство ориентировано на код для отображения концепций LINQ to SQL. Как правило, вы будете использовать реляционный конструктор объектов для создания объектной модели.
Примечание.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Это пошаговое руководство было написано с помощью параметров разработки Visual Basic.
Необходимые компоненты
Для хранения файлов используется выделенная папка ("c:\linqtest"). Прежде чем приступить к выполнению задач, создайте такую папку.
В данном пошаговом руководстве требуется доступ к учебной базе данных Northwind. Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных". После загрузки базы данных скопируйте полученный файл в папку c:\linqtest.
Обзор
Данное пошаговое руководство состоит из шести основных задач.
Создание решения LINQ to SQL в Visual Studio.
Сопоставление класса с таблицей базы данных.
Назначение свойств классу для представления столбцов базы данных.
Указание подключения к базе данных Northwind.
Создание простого запроса к базе данных.
Выполнение запроса и просмотр результатов.
Создание решения LINQ to SQL
В этой первой задаче создается решение Visual Studio, содержащее необходимые ссылки на сборку и запуск проекта LINQ to SQL.
Создание решения LINQ to SQL
В меню Файл выберите пункт Создать проект.
В области типов проектов диалогового окна "Создать проект" щелкните Visual Basic.
В области Шаблоны щелкните Консольное приложение.
В поле "Имя" введите LinqConsoleApp.
Щелкните OK.
Добавление ссылок и директив LINQ
В этом пошаговом руководстве используются сборки, которые могут быть не установлены по умолчанию в проект. Если System.Data.Linq
в проекте нет ссылки (щелкните "Показать все файлы" в Обозреватель решений и разверните узел ссылок), добавьте его, как описано в следующих шагах.
Добавление сборки System.Data.Linq
В Обозреватель решений щелкните правой кнопкой мыши ссылки и нажмите кнопку "Добавить ссылку".
В диалоговом окне "Добавить ссылку" нажмите кнопку .NET, щелкните сборку System.Data.Linq и нажмите кнопку "ОК".
Сборка будет добавлена в проект.
Кроме того, в диалоговом окне "Добавить ссылку" нажмите кнопку .NET, прокрутите страницу и нажмите кнопку System.Windows.Forms и нажмите кнопку "ОК".
Эта сборка, которая поддерживает окно сообщений в данном пошаговом руководстве, будет добавлена в проект.
Добавьте следующие директивы перед
Module1
.Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
Сопоставление класса с таблицей базы данных
На этом этапе создается класс, который сопоставляется с таблицей базы данных. Такой класс называется классом сущности. Обратите внимание, что сопоставление осуществляется простым добавлением атрибута TableAttribute. Свойство Name задает имя таблицы в базе данных.
Создание класса сущностей и его сопоставление с таблицей базы данных
Введите или вставьте следующий код в файл Module1.vb непосредственно перед методом
Sub Main
.<Table(Name:="Customers")> _ Public Class Customer End Class
Назначение свойств классу для представления столбцов базы данных.
На этом этапе выполняется несколько задач.
Используется атрибут ColumnAttribute для назначения классу сущностей свойств
CustomerID
иCity
, представляющих столбцы в таблице базы данных.Назначается свойство
CustomerID
, представляющее столбец первичного ключа в базе данных.Назначаются поля
_CustomerID
и_City
для закрытого хранения. LINQ to SQL может хранить и извлекать значения напрямую, а не использовать общедоступные методы доступа, которые могут включать бизнес-логику.
Представление характеристик двух столбцов базы данных
Введите или вставьте следующий код в файл Module1.vb непосредственно перед методом
End Class
.Private _CustomerID As String <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _ Public Property CustomerID() As String Get Return Me._CustomerID End Get Set(ByVal value As String) Me._CustomerID = value End Set End Property Private _City As String <Column(Storage:="_City")> _ Public Property City() As String Get Return Me._City End Get Set(ByVal value As String) Me._City = value End Set End Property
Указание подключения к базе данных Northwind
На этом этапе для установки подключения между основанными на коде структурами данных и самой базой данных используется объект DataContext. Основным каналом, через который извлекаются объекты из базы данных и отправляются изменения, является класс DataContext.
Также объявляется объект Table(Of Customer)
, который действует как логическая типизированная таблица для запросов к таблице Customers в базе данных. Эти запросы создаются и выполняются в последующих действиях.
Указание подключения к базе данных
Введите или вставьте следующий код в метод
Sub Main
.Обратите внимание: предполагается, что файл
northwnd.mdf
находится в папке "linqtest". Дополнительные сведения см. в разделе "Предварительные требования" ранее в этом руководстве.' Use a connection string. Dim db As New DataContext _ ("c:\linqtest\northwnd.mdf") ' Get a typed table to run queries. Dim Customers As Table(Of Customer) = _ db.GetTable(Of Customer)()
Создание простого запроса
На этом этапе создается запрос для поиска клиентов из таблицы Customers базы данных, находящихся в Лондоне. Код запроса, создаваемый на этом шаге, только описывает запрос. но не выполняет его. Этот подход называется отложенным выполнением. Дополнительные сведения см. в разделе Введение в запросы LINQ (C#).
Вы также создайте выходные данные журнала для отображения команд SQL, создаваемых LINQ to SQL. Возможность ведения журнала (которая использует метод Log) очень полезна при отладке, а также при проверке того, что команды, отправляемые в базу данных, точно соответствуют запросу.
Создание простого запроса
Введите или вставьте следующий код в метод
Sub Main
после объявленияTable(Of Customer)
.' Attach the log to show generated SQL in a console window. db.Log = Console.Out ' Query for customers in London. Dim custQuery = _ From cust In Customers _ Where cust.City = "London" _ Select cust
Выполнение запроса
На этом шаге производится фактическое выполнение запроса. Выражения запроса, созданные на предыдущем этапе, не оцениваются до тех пор, пока не понадобятся результаты. После начала итерации For Each
выполняется команда SQL для базы данных и материализуются объекты.
Выполнение запроса
Введите или вставьте следующий код в конце метода
Sub Main
(после описания запроса).' Format the message box. Dim msg As String = "", title As String = "London customers:", _ response As MsgBoxResult, style As MsgBoxStyle = _ MsgBoxStyle.Information ' Execute the query. For Each custObj In custQuery msg &= String.Format(custObj.CustomerID & vbCrLf) Next ' Display the results. response = MsgBox(msg, style, title)
Нажмите клавишу F5, чтобы начать отладку приложения.
Примечание.
Если приложение создает ошибку во время выполнения, ознакомьтесь с разделом "Устранение неполадок" Обучение по пошаговому руководству.
В окне сообщения отображается список из шести клиентов. В окне консоли отображается созданный код SQL.
Нажмите кнопку ОК, чтобы закрыть окно сообщения.
Приложение закрывается.
В меню File (Файл) выберите команду Save All (Сохранить все).
Это приложение потребуется при выполнении следующего пошагового руководства.
Next Steps
Пошаговое руководство. Выполнение запросов между связями (Visual Basic) продолжается, где заканчивается это пошаговое руководство. В пошаговом руководстве по запросам между связями показано, как LINQ to SQL может выполнять запросы между таблицами, как и соединения в реляционной базе данных.
Если требуется выполнить пошаговое руководство "Выполнение запросов в связях", необходимо сохранить решение, созданное в процессе только что завершенного пошагового руководства. Это обязательное условие.