Пошаговое руководство. Простая модель объектов и простой запрос (Visual Basic) (LINQ to SQL)

Обновлен: November 2007

В данном пошаговом руководстве представлен основной и полный сценарий LINQ to SQL с подробным объяснением выполняемых действий. В нем создается класс сущностей, который моделирует таблицу Customers в учебной базе данных Northwind. После этого создается простой запрос на получение списка клиентов, находящихся в Лондоне.

Данное руководство ориентировано на создание кода, чтобы продемонстрировать основные понятия технологии LINQ to SQL. Обычно с помощью Сред. Объектно-реляционный конструктор создается собственная модель объектов. Дополнительные сведения см. в разделах Реляционный конструктор объектов и Реляционный конструктор объектов и Реляционный конструктор объектов.

Bb399379.alert_note(ru-ru,VS.90).gifПримечание.

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Это пошаговое руководство было написано с помощью параметров разработки Visual Basic.

Предварительные требования

  • Для хранения файлов используется выделенная папка ("c:\linqtest"). Прежде чем приступить к выполнению задач, создайте такую папку.

  • В данном пошаговом руководстве требуется доступ к учебной базе данных Northwind. Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе Загрузка образцов баз данных (LINQ to SQL). После загрузки базы данных скопируйте полученный файл в папку c:\linqtest.

Общие сведения

Данное пошаговое руководство состоит из шести основных задач.

  • Создание решения LINQ to SQL в среде Visual Studio.

  • Сопоставление класса с таблицей базы данных.

  • Назначение свойств классу для представления столбцов базы данных.

  • Указание подключения к базе данных Northwind.

  • Создание простого запроса к базе данных.

  • Выполнение запроса и просмотр результатов.

ссылка на видео Демонстрационные видеоматериалы см. в разделе Инструкции по работе с видео. Простая модель объектов и простой запрос (Visual Basic) (LINQ to SQL).

Создание решения LINQ to SQL

В первой задаче будет создано решение Visual Studio, содержащее ссылки, необходимые для построения и запуска проекта LINQ to SQL.

Создание решения LINQ to SQL

  1. В меню Файл выберите команду Создать проект.

  2. В диалоговом окне Создание проекта в области Тип проекта выберите Visual Basic.

  3. В области Шаблоны щелкните Консольное приложение.

  4. В поле Имя введите LinqConsoleApp.

  5. Нажмите кнопку OK.

Добавление ссылок и директив LINQ

В этом пошаговом руководстве используются сборки, которые могут быть не установлены по умолчанию в проект. Если System.Data.Linq не входит в список ссылок проекта (щелкните Показать все файлы в обозревателе решений и разверните узел Ссылки), добавьте ее, как описано в следующих действиях.

Добавление сборки System.Data.Linq

  1. В Обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку.

  2. В диалоговом окне Добавление ссылки щелкните .NET, выберите сборку System.Data.Linq, а затем нажмите кнопку ОК.

    Сборка будет добавлена в проект.

  3. Кроме того, в диалоговом окне Добавление ссылки щелкните .NET, прокрутите список вниз, выберите сборку System.Windows.Forms, а затем нажмите кнопку ОК.

    Эта сборка, которая поддерживает окно сообщений в данном пошаговом руководстве, будет добавлена в проект.

  4. Добавьте следующие директивы перед 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.

Можно также записать выходные данные в журнал, чтобы продемонстрировать команды 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 для базы данных и материализуются объекты.

Выполнение запроса

  1. Введите или вставьте следующий код в конце метода 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)
    
  2. Нажмите клавишу F5, чтобы начать отладку приложения.

    Bb399379.alert_note(ru-ru,VS.90).gifПримечание.

    Если во время выполнения приложение создает ошибку, см. подраздел "Устранение неполадок" раздела Обучение с помощью пошаговых руководств (LINQ to SQL).

    В окне сообщения отображается список из шести клиентов. В окне консоли отображается созданный код SQL.

  3. Нажмите кнопку ОК, чтобы закрыть окно сообщения.

    Приложение закрывается.

  4. В меню Файл выберите Сохранить все.

    Это приложение потребуется при выполнении следующего пошагового руководства.

Следующие действия

Раздел Пошаговое руководство. Выполнение запросов со связями (Visual Basic) (LINQ to SQL) начинается с того места, на котором оканчивается данное руководство. В пошаговом руководстве "Выполнение запросов в связях" демонстрируется, как технология LINQ to SQL может выполнять запросы между таблицами, аналогичные соединениям в реляционных базах данных.

Если требуется выполнить пошаговое руководство "Выполнение запросов в связях", необходимо сохранить решение, созданное в процессе только что завершенного пошагового руководства. Это обязательное условие.

См. также

Основные понятия

Обучение с помощью пошаговых руководств (LINQ to SQL)