Пошаговое руководство. Обработка данных (Visual Basic) (LINQ to SQL)
Обновлен: November 2007
В данном руководстве представлен основной и полный сценарий LINQ to SQL по добавлению, изменению и удалению данных в базе данных. Для добавления клиента, изменения его имени и удаления заказа следует использовать копию учебной базы данных Northwind.
Примечание. |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Это пошаговое руководство было написано с помощью параметров разработки Visual Basic.
Предварительные требования
Необходимо выполнить следующие требования.
Для хранения файлов используется выделенная папка ("c:\linqtest2"). Прежде чем приступить к выполнению задач, создайте такую папку.
Наличие учебной базы данных Northwind.
Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе Загрузка образцов баз данных (LINQ to SQL). После загрузки базы данных скопируйте файл northwnd.mdf в папку c:\linqtest2.
Наличие файла кода Visual Basic, созданного из базы данных "Борей".
Его можно создать либо помощью оператора Сред. Объектно-реляционный конструктор, либо с помощью средства SQLMetal. Данное пошаговое руководство было написано с использованием средства SQLMetal со следующей командной строкой:
sqlmetal /code:"c:\linqtest2\northwind.vb" /language:vb "C:\linqtest2\northwnd.mdf" /pluralize
Дополнительные сведения см. в разделе Средство создания кода (SqlMetal.exe).
Общие сведения
Данное пошаговое руководство состоит из шести основных задач.
Создание решения LINQ to SQL в Visual Studio.
Добавление файла кода базы данных в проект.
Создание нового объекта клиента.
Изменение контактного имени клиента.
Удаление заказа.
Отправка внесенных изменений в базу данных Northwind.
Создание решения LINQ to SQL
В первой задаче создается решение Visual Studio, которое содержит ссылки, необходимые для построения и выполнения проекта LINQ to SQL.
Создание решения LINQ to SQL
В меню Файл Visual Studio выберите пункт Создать проект.
В диалоговом окне Создание проекта в области Тип проекта выберите Visual Basic.
В области Шаблоны щелкните Консольное приложение.
В поле Имя введите LinqDataManipulationApp.
Нажмите кнопку ОК.
Добавление ссылок и директив LINQ
В этом пошаговом руководстве используются сборки, которые могут быть не установлены по умолчанию в проект. Если System.Data.Linq не входит в список ссылок проекта (щелкните Показать все файлы в обозревателе решений и разверните узел Ссылки), добавьте ее, как описано в следующих действиях.
Добавление сборки System.Data.Linq
В Обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку.
В диалоговом окне Добавление ссылки щелкните .NET, выберите сборку System.Data.Linq, а затем нажмите кнопку ОК.
Сборка будет добавлена в проект.
В редакторе кода добавьте следующую директиву перед Module1.
Imports System.Data.Linq Imports System.Data.Linq.Mapping
Добавление файла кода Northwind в проект
При выполнении этих действий подразумевается, что для создания файла кода из учебной базы данных Northwind использовалось средство SQLMetal. Дополнительные сведения см. в разделе "Предварительные требования" ранее в этом руководстве.
Добавление файла кода northwind в проект
В меню Проект выберите команду Добавить существующий элемент.
В диалоговом окне Добавление существующего элемента перейдите к файлу c:\linqtest2\northwind.vb и нажмите кнопку Добавить.
Файл northwind.vb будет добавлен в проект.
Настройка подключения к базе данных
Сначала проверьте подключение к базе данных. Обратите особое внимание, что в имени базы данных — Northwnd — отсутствует буква "i". Если при выполнении следующих действий возникают ошибки, просмотрите файл northwind.vb, чтобы определить написание разделяемого класса Northwind.
Настройка и проверка подключения к базе данных
Введите или вставьте следующий код в Sub Main.
' Use a connection string, but connect to ' the temporary copy of the database. Dim db As New Northwnd _ ("C:\linqtest2\northwnd.mdf") ' Keep the console window open after activity stops. Console.ReadLine()
Чтобы проверить приложение на этом этапе, нажмите клавишу F5.
Откроется окно Консоль.
Закройте приложение. Для этого в окне Консоль нажмите клавишу ВВОД либо в Visual Studio в меню Отладка выберите команду Остановить отладку.
Создание новой сущности
Создание новой сущности не представляет особых проблем. Для создания объектов (например, Customer) можно использовать ключевое слово New.
В этом и следующих разделах выполняются изменения только локального кэша. Изменения не будут отправлены в базу данных до тех пор, пока ближе к концу данного руководства не будет вызван SubmitChanges.
Добавление нового объекта сущностей Customer
Создайте новый Customer, добавив перед Console.ReadLine в Sub Main следующий код.
' Create the new Customer object. Dim newCust As New Customer() newCust.CompanyName = "AdventureWorks Cafe" newCust.CustomerID = "A3VCA" ' Add the customer to the Customers table. db.Customers.InsertOnSubmit(newCust) Console.WriteLine("Customers matching CA before insert:") Dim custQuery = _ From cust In db.Customers _ Where cust.CustomerID.Contains("CA") _ Select cust For Each cust In custQuery Console.WriteLine("Customer ID: " & cust.CustomerID) Next
Нажмите клавишу F5 для отладки решения.
В окне консоли отображаются следующие результаты.
Customers matching CA before insert:
Customer ID: CACTU
Customer ID: RICAR
Обратите внимание, что в выходных данных новая строка не отображается. Новые данные еще не были переданы в базу данных.
Чтобы остановить отладку, в окне Консоль нажмите клавишу ВВОД.
Обновление сущности
При выполнении следующих действий будет извлечен объект Customer и изменено одно из его свойств.
Изменение имени клиента
Добавьте следующий код перед Console.ReadLine():
Dim existingCust = _ (From cust In db.Customers _ Where cust.CustomerID = "ALFKI" _ Select cust).First() ' Change the contact name of the customer. existingCust.ContactName = "New Contact"
Удаление сущности
Используя тот же самый объект клиента, можно удалить первый заказ.
В следующем коде показано, как разорвать связь между строками и удалить строку из базы данных.
Удаление строки
Добавьте следующий код перед Console.ReadLine().
' Access the first element in the Orders collection. Dim ord0 As Order = existingCust.Orders(0) ' Access the first element in the OrderDetails collection. Dim detail0 As OrderDetail = ord0.OrderDetails(0) ' Display the order to be deleted. Console.WriteLine _ (vbCrLf & "The Order Detail to be deleted is: OrderID = " _ & detail0.OrderID) ' Mark the Order Detail row for deletion from the database. db.OrderDetails.DeleteOnSubmit(detail0)
Отправка изменений в базу данных
Последнее действие, необходимое для создания, обновления и удаления объектов, заключается в фактической отправке изменений в базу данных. Без него изменения останутся на локальном уровне и не появятся в результатах запроса.
Отправка изменений в базу данных
Вставьте следующий код перед Console.ReadLine.
db.SubmitChanges()
Вставьте следующий код (после SubmitChanges), чтобы показать результаты до и после отправки изменений.
Console.WriteLine(vbCrLf & "Customers matching CA after update:") Dim finalQuery = _ From cust In db.Customers _ Where cust.CustomerID.Contains("CA") _ Select cust For Each cust In finalQuery Console.WriteLine("Customer ID: " & cust.CustomerID) Next
Нажмите клавишу F5 для отладки решения.
Появится окно консоли со следующими данными.
Customers matching CA before update: Customer ID: CACTU Customer ID: RICAR The Order Detail to be deleted is: OrderID = 10643 Customers matching CA after update: Customer ID: A3VCA Customer ID: CACTU Customer ID: RICAR
Чтобы остановить отладку, в окне Консоль нажмите клавишу ВВОД.
Примечание. |
---|
После добавления нового клиента путем отправки изменений это решение нельзя повторно выполнить в исходном виде, поскольку этот же клиент не может быть добавлен без изменений. Для повторного выполнения решения измените значение идентификатора добавляемого клиента. |