Пошаговое руководство. Обработка данных (Visual Basic) (LINQ to SQL)

Обновлен: November 2007

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

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

На вашем компьютере названия некоторых элементов интерфейса пользователя 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

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

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

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

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

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

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

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

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

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

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

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

  3. В редакторе кода добавьте следующую директиву перед Module1.

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    

Добавление файла кода Northwind в проект

При выполнении этих действий подразумевается, что для создания файла кода из учебной базы данных Northwind использовалось средство SQLMetal. Дополнительные сведения см. в разделе "Предварительные требования" ранее в этом руководстве.

Добавление файла кода northwind в проект

  1. В меню Проект выберите команду Добавить существующий элемент.

  2. В диалоговом окне Добавление существующего элемента перейдите к файлу c:\linqtest2\northwind.vb и нажмите кнопку Добавить.

    Файл northwind.vb будет добавлен в проект.

Настройка подключения к базе данных

Сначала проверьте подключение к базе данных. Обратите особое внимание, что в имени базы данных — Northwnd — отсутствует буква "i". Если при выполнении следующих действий возникают ошибки, просмотрите файл northwind.vb, чтобы определить написание разделяемого класса Northwind.

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

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

    Откроется окно Консоль.

    Закройте приложение. Для этого в окне Консоль нажмите клавишу ВВОД либо в Visual Studio в меню Отладка выберите команду Остановить отладку.

Создание новой сущности

Создание новой сущности не представляет особых проблем. Для создания объектов (например, Customer) можно использовать ключевое слово New.

В этом и следующих разделах выполняются изменения только локального кэша. Изменения не будут отправлены в базу данных до тех пор, пока ближе к концу данного руководства не будет вызван SubmitChanges.

Добавление нового объекта сущностей Customer

  1. Создайте новый 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
    
  2. Нажмите клавишу F5 для отладки решения.

    В окне консоли отображаются следующие результаты.

    Customers matching CA before insert:

    Customer ID: CACTU

    Customer ID: RICAR

    Обратите внимание, что в выходных данных новая строка не отображается. Новые данные еще не были переданы в базу данных.

  3. Чтобы остановить отладку, в окне Консоль нажмите клавишу ВВОД.

Обновление сущности

При выполнении следующих действий будет извлечен объект 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)
    

Отправка изменений в базу данных

Последнее действие, необходимое для создания, обновления и удаления объектов, заключается в фактической отправке изменений в базу данных. Без него изменения останутся на локальном уровне и не появятся в результатах запроса.

Отправка изменений в базу данных

  1. Вставьте следующий код перед Console.ReadLine.

    db.SubmitChanges()
    
  2. Вставьте следующий код (после 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
    
  3. Нажмите клавишу 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
    
  4. Чтобы остановить отладку, в окне Консоль нажмите клавишу ВВОД.

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

После добавления нового клиента путем отправки изменений это решение нельзя повторно выполнить в исходном виде, поскольку этот же клиент не может быть добавлен без изменений. Для повторного выполнения решения измените значение идентификатора добавляемого клиента.

См. также

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

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