Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом пошаговом руководстве представлен базовый комплексный сценарий LINQ to SQL с минимальными сложностями. Вы создадите класс сущностей, который моделирует таблицу Customers в примере базы данных Northwind. Затем вы создадите простой запрос для перечисления клиентов, находящихся в Лондоне.
Это пошаговое руководство ориентировано на код для отображения концепций LINQ to SQL. Как правило, для создания объектной модели используется реляционный конструктор объектов.
Замечание
На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса Visual Studio в следующих инструкциях. Выпуск Visual Studio, который у вас есть, и параметры, которые вы используете, определяют эти элементы. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
Это пошаговое руководство было написано с помощью параметров разработки 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.
Нажмите кнопку ОК.
Добавление ссылок и директив 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)()
Создание простого запроса
На этом шаге вы создадите запрос, чтобы найти клиентов в таблице "Клиенты базы данных" в Лондоне. Код запроса на этом шаге просто описывает запрос. Он не выполняет это. Этот подход называется отложенным выполнением. Дополнительные сведения см. в разделе Введение в запросы 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 (Сохранить все).
Если вы продолжите работу со следующим пошаговым руководством, вам потребуется это приложение.
Дальнейшие шаги
Пошаговое руководство: Выполнение запросов через отношения (Visual Basic) продолжается с того места, где заканчивается это пошаговое руководство. В пошаговом руководстве по запросам через межтабличные связи показано, как LINQ to SQL может выполнять запросы между таблицами, аналогично соединениям в реляционной базе данных.
Если вы хотите выполнить пошаговое руководство по запросу между связями, сохраните решение только что завершенного пошагового руководства, которое является предварительным условием.