Бөлісу құралы:


Пошаговое руководство. Управление данными (Visual Basic)

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

Замечание

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

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

Предпосылки

Для этого пошагового руководства требуется следующее:

  • В этом пошаговом руководстве для хранения файлов используется выделенная папка ("c:\linqtest2"). Создайте эту папку перед началом пошагового руководства.

  • Пример базы данных Northwind.

    Если у вас нет этой базы данных на компьютере разработки, ее можно скачать на сайте загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных". После скачивания базы данных скопируйте файл northwnd.mdf в папку c:\linqtest2.

  • Файл кода Visual Basic, созданный из базы данных Northwind.

    Этот файл можно создать с помощью реляционного конструктора объектов или средства 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 в проект

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

Добавление файла кода 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 в конце этого пошагового руководства.

Чтобы добавить новый объект сущности "Клиент"

  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. Нажмите клавишу ВВОД в окне консоли , чтобы остановить отладку.

Замечание

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

См. также