Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом пошаговом руководстве представлен базовый комплексный сценарий LINQ to SQL для добавления, изменения и удаления данных в базе данных. Вы будете использовать копию образца базы данных Northwind для добавления клиента, изменения имени клиента и удаления заказа.
Замечание
На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса Visual Studio в следующих инструкциях. Выпуск Visual Studio, который у вас есть, и параметры, которые вы используете, определяют эти элементы. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
Это пошаговое руководство было написано с помощью параметров разработки Visual C#.
Предпосылки
Для этого пошагового руководства требуется следующее:
В этом пошаговом руководстве для хранения файлов используется выделенная папка ("c:\linqtest6"). Создайте эту папку перед началом пошагового руководства.
Пример базы данных Northwind.
Если у вас нет этой базы данных на компьютере разработки, ее можно скачать на сайте загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных". После скачивания базы данных скопируйте файл northwnd.mdf в папку c:\linqtest6.
Файл кода C#, созданный из базы данных Northwind.
Этот файл можно создать с помощью реляционного конструктора объектов или средства SQLMetal. Это пошаговое руководство было написано с помощью средства SQLMetal со следующей командной строкой:
sqlmetal /code:"c:\linqtest6\northwind.cs" /language:csharp "C:\linqtest6\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 C#.
В области "Шаблоны " щелкните консольное приложение.
В поле "Имя" введите LinqDataManipulationApp.
В поле "Расположение" проверьте место хранения файлов проекта.
Нажмите кнопку ОК.
Добавление ссылок и директив LINQ
В этом пошаговом руководстве используются сборки, которые могут не быть установлены по умолчанию в проекте. Если System.Data.Linq не указан в качестве ссылки в проекте, добавьте его, как описано в следующих шагах:
Чтобы добавить System.Data.Linq
В Обозреватель решений щелкните правой кнопкой мыши ссылки и нажмите кнопку "Добавить ссылку".
В диалоговом окне "Добавить ссылку" нажмите кнопку .NET, щелкните сборку System.Data.Linq и нажмите кнопку "ОК".
Сборка добавлена в проект.
Добавьте следующие директивы в верхней части Program.cs:
using System.Data.Linq; using System.Data.Linq.Mapping;
Добавление файла кода Northwind в проект
В этих шагах предполагается, что вы использовали средство SQLMetal для создания файла кода из примера базы данных Northwind. Дополнительные сведения см. в разделе "Предварительные требования" выше в этом пошаговом руководстве.
Добавление файла кода northwind в проект
В меню Проект щелкните Добавить существующий элемент.
В диалоговом окне "Добавление существующего элемента " перейдите в раздел c:\linqtest6\northwind.cs и нажмите кнопку "Добавить".
Файл northwind.cs добавляется в проект.
Настройка подключения к базе данных
Сначала проверьте подключение к базе данных. Обратите особое внимание на то, что в названии базы данных Northwnd отсутствует символ "i". Если вы создаете ошибки в следующих шагах, просмотрите файл northwind.cs, чтобы определить, как орфографирован частичный класс Northwind.
Настройка и проверка подключения к базе данных
Введите или вставьте следующий код в
Main
метод в классе Program:// Use the following connection string. Northwnd db = new Northwnd(@"c:\linqtest6\northwnd.mdf"); // Keep the console window open after activity stops. Console.ReadLine();
Нажмите клавишу F5, чтобы протестировать приложение на этом этапе.
Откроется окно консоли .
Приложение можно закрыть, нажав клавишу ВВОД в окне консоли или нажав кнопку "Остановить отладку " в меню отладки Visual Studio.
Создание новой сущности
Создание новой сущности просто. С помощью ключевого слова Customer
можно создать объекты (например, new
).
В этом и следующих разделах вы вносите изменения только в локальный кэш. Изменения не отправляются в базу данных, пока не вызовете SubmitChanges в конце этого пошагового руководства.
Чтобы добавить новый объект сущности "Клиент"
Создайте новый
Customer
, добавив следующий код передConsole.ReadLine();
в методеMain
.// Create the new Customer object. Customer newCust = new Customer(); newCust.CompanyName = "AdventureWorks Cafe"; newCust.CustomerID = "ADVCA"; // Add the customer to the Customers table. db.Customers.InsertOnSubmit(newCust); Console.WriteLine("\nCustomers matching CA before insert"); foreach (var c in db.Customers.Where(cust => cust.CustomerID.Contains("CA"))) { Console.WriteLine("{0}, {1}, {2}", c.CustomerID, c.CompanyName, c.Orders.Count); }
Нажмите клавишу F5, чтобы отладить решение.
Нажмите клавишу ВВОД в окне консоли чтобы остановить отладку и продолжить пошаговое руководство.
Обновление сущности
На следующих шагах вы получите Customer
объект и измените одно из его свойств.
Изменение имени клиента
Добавьте приведенный выше
Console.ReadLine();
код:// Query for specific customer. // First() returns one object rather than a collection. var existingCust = (from c in db.Customers where c.CustomerID == "ALFKI" select c) .First(); // Change the contact name of the customer. existingCust.ContactName = "New Contact";
Удаление объекта
Используя тот же объект клиента, вы можете удалить первый заказ.
В следующем коде показано, как разорвать связи между строками и как удалить строку из базы данных. Добавьте следующий код перед Console.ReadLine
, чтобы увидеть, как можно удалить объекты:
Удаление строки
Добавьте приведенный выше
Console.ReadLine();
код:// Access the first element in the Orders collection. Order ord0 = existingCust.Orders[0]; // Access the first element in the OrderDetails collection. OrderDetail detail0 = ord0.OrderDetails[0]; // Display the order to be deleted. Console.WriteLine ("The Order Detail to be deleted is: OrderID = {0}, ProductID = {1}", detail0.OrderID, detail0.ProductID); // Mark the Order Detail row for deletion from the database. db.OrderDetails.DeleteOnSubmit(detail0);
Отправка изменений в базу данных
Последний шаг, необходимый для создания, обновления и удаления объектов, заключается в том, чтобы фактически отправить изменения в базу данных. Без этого шага изменения являются локальными и не будут отображаться в результатах запроса.
Отправка изменений в базу данных
Вставьте следующий код прямо перед
Console.ReadLine
:db.SubmitChanges();
Вставьте следующий код (после
SubmitChanges
) для отображения эффектов отправки изменений до и после нее:Console.WriteLine("\nCustomers matching CA after update"); foreach (var c in db.Customers.Where(cust => cust.CustomerID.Contains("CA"))) { Console.WriteLine("{0}, {1}, {2}", c.CustomerID, c.CompanyName, c.Orders.Count); }
Нажмите клавишу F5, чтобы отладить решение.
Нажмите клавишу ВВОД в окне консоли , чтобы закрыть приложение.
Замечание
После того, как вы добавили нового клиента, отправив изменения, вы не сможете снова выполнить это решение в его текущем виде. Чтобы снова выполнить решение, измените имя клиента и идентификатора клиента, который будет добавлен.