Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В этом пошаговом руководстве представлен базовый комплексный сценарий 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
В меню "Файл 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 в проект
В этих шагах предполагается, что вы использовали средство SQLMetal для создания файла кода из примера базы данных Northwind. Дополнительные сведения см. в разделе "Предварительные требования" выше в этом пошаговом руководстве.
Добавление файла кода 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, добавив следующий код перед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: CACTUCustomer 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Нажмите клавишу ВВОД в окне консоли , чтобы остановить отладку.
Замечание
После добавления нового клиента, отправив изменения, вы не сможете снова выполнить это решение, так как вы не сможете снова добавить того же клиента, что и есть. Чтобы снова выполнить решение, измените значение идентификатора клиента, которое будет добавлено.