Практическое руководство. Изменение данных в базе данных с помощью LINQ (Visual Basic)
Запросы языка интегрированных запросов (LINQ) упрощают доступ к сведениям базы данных и изменение значений в базе данных.
В следующем примере показано создание нового приложения, которое получает и обновляет сведения в базе данных SQL Server.
В примерах этого раздела используется учебная база данных "Борей".При отсутствии учебной базы данных "Борей" на компьютере разработчика ее можно загрузить с веб-узла Центра загрузки Майкрософт.Подробные инструкции см. в разделе Downloading Sample Databases (LINQ to SQL).
Создание подключения к базе данных
В Visual Studio откройте Обозреватель серверов/Обозреватель базы данных, щелкнув Обозреватель серверов/Обозреватель базы данных в меню Вид.
Щелкните правой кнопкой мыши Подключения данных в Обозреватель серверов/Обозреватель базы данных и затем щелкните Добавить подключение.
Укажите допустимое подключение к учебной базе данных "Northwind".
Чтобы добавить проект, с LINQ для SQL
В меню Файл окна Visual Studio выберите команду Создать и щелкните Проект.Выберите Приложение Windows Forms в качестве типа проекта Visual Basic.
В меню Проект выберите команду Добавить новый элемент.Выберите шаблон элемента Классы LINQ-SQL.
Назовите файл northwind.dbml.Нажмите кнопку Добавить.Реляционный конструктор объектов (O/R-конструктор) открыт для файла northwind.dbml.
Чтобы добавить таблицы к запросу и изменить в конструкторе
В представлении Обозреватель серверов или Обозреватель баз данных разверните подключение к базе данных "Northwind".Разверните папку Таблицы.
Если O/R-конструктор закрыт, его можно открыть, дважды щелкнув файл northwind.dbml, добавленный ранее.
Щелкните таблицу "Клиенты" и перетащите ее в левую область конструктора.
Конструктор создает новый объект Customer для проекта.
Сохраните изменения и закройте конструктор.
Сохраните проект.
Чтобы добавить код изменения базы данных и отображения результатов
С панели элементов перетащите элемент управления DataGridView в заданную по умолчанию форму Windows Forms для проекта (Form1).
При добавлении таблиц в реляционный конструктор объектов конструктор добавил объект DataContext в проект.Этот объект содержит код, который можно использовать для доступа к таблице Customers.Он также содержит код, который определяет локальный объект Customer и коллекцию Customers для таблицы.Объекту DataContext для проекта присвоено имя на основе имени файла .dbml.Для данного проекта объект DataContext называется northwindDataContext.
Можно создать экземпляр объекта DataContext в коде и запросе и изменить коллекцию Customers, определенную в конструкторе O/R.Изменения, внесенные в коллекцию Customers, не отражаются в базе данных до тех пор, пока их отправить туда вызовом метода SubmitChanges объекта DataContext.
Дважды щелкните форму Windows Form1, чтобы добавить код в событие Load для запроса к таблице Customers, который предоставляется как свойство элементаDataContext.Добавьте следующий код:
Private db As northwindDataContext Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles MyBase.Load db = New northwindDataContext() RefreshData() End Sub Private Sub RefreshData() Dim customers = From cust In db.Customers Where cust.City(0) = "W" Select cust DataGridView1.DataSource = customers End Sub
Из панели элементов перетащите на форму 3 элемента управления Button.Выберите первый элемент управления Button.В окне Свойства задайте свойству Name элемента управления Button значение AddButton и свойству Text значение Add.Выберите вторую кнопку и задайте свойству Name значение UpdateButton и свойству Text значение Update.Выберите третью кнопку и задайте свойству Name значение DeleteButton и свойству Text значение Delete.
Дважды щелкните кнопку Add для добавления кода к событию Click этой кнопки.Добавьте следующий код:
Private Sub AddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles AddButton.Click Dim cust As New Customer With { .City = "Wellington", .CompanyName = "Blue Yonder Airlines", .ContactName = "Jill Frank", .Country = "New Zealand", .CustomerID = "JILLF"} db.Customers.InsertOnSubmit(cust) Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
Дважды щелкните кнопку Update для добавления кода к событию Click этой кнопки.Добавьте следующий код:
Private Sub UpdateButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles UpdateButton.Click Dim updateCust = (From cust In db.Customers Where cust.CustomerID = "JILLF").ToList()(0) updateCust.ContactName = "Jill Shrader" Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
Дважды щелкните кнопку Delete для добавления кода к событию Click этой кнопки.Добавьте следующий код:
Private Sub DeleteButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles DeleteButton.Click Dim deleteCust = (From cust In db.Customers Where cust.CustomerID = "JILLF").ToList()(0) db.Customers.DeleteOnSubmit(deleteCust) Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
Нажмите клавишу F5 для запуска проекта.Нажмите кнопку Add для добавления новой записи.Нажмите кнопку Update для изменения новой записи.Нажмите кнопку Delete для удаления новой записи.
См. также
Задачи
How to: Assign Stored Procedures to Perform Updates, Inserts, and Deletes (O/R Designer)
Walkthrough: Creating LINQ to SQL Classes (O/R Designer)
Основные понятия
DataContext Methods (O/R Designer)