Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Language-Integrated запрос (LINQ) упрощает доступ к данным базы данных и выполнение запросов.
В следующем примере показано, как создать приложение, которое выполняет запросы к базе данных SQL Server. Образец подсчитывает количество, суммирует и вычисляет средние значения результатов с использованием клауз Aggregate
и Group By
. Дополнительные сведения см. в агрегатном предложении и предложении GROUP BY.
В примерах в этой статье используется пример базы данных Northwind. Сведения о получении базы данных см. в разделе скачивание примеров баз данных..
Заметка
На компьютере могут отображаться различные имена или расположения для некоторых элементов пользовательского интерфейса Visual Studio в следующих инструкциях. Выпуск Visual Studio, который у вас есть, и параметры, которые вы используете, определяют эти элементы. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки.
Создание подключения к базе данных
В Visual Studio откройте обозреватель серверов и/обозреватель баз данных, щелкнув на обозревателе серверов/обозревателе баз данных в меню Представление.
Щелкните правой кнопкой мыши подключения к данным в обозревателе серверов /Обозревателя баз данных, а затем щелкните Добавить подключение.
Укажите корректное подключение к демонстрационной базе данных Northwind.
Добавление проекта, содержащего файл LINQ to SQL
В Visual Studio в меню файл выберите пункт Создать и щелкните Project. Выберите Visual Basic Приложение Windows Forms в качестве типа проекта.
В меню проекта щелкните Добавить новый элемент. Выберите шаблон элемента LINQ to SQL Classes.
Назовите файл
northwind.dbml
. Нажмите кнопку Добавить. Конструктор реляционных объектов (конструктор O/R) открыт для файла northwind.dbml.
Добавить таблицы в запрос в O/R Designer.
В обозревателе серверов /Обозреватель баз данныхразверните подключение к базе данных Northwind. Разверните папку Таблица.
Если вы закрыли конструктор O/R, его можно повторно открыть, дважды щелкнув файл northwind.dbml, который вы добавили ранее.
Щелкните таблицу "Клиенты" и перетащите ее в левую область конструктора. Щелкните таблицу "Заказы" и перетащите ее в левую область конструктора.
Конструктор создает новые объекты
Customer
иOrder
для проекта. Обратите внимание, что конструктор автоматически обнаруживает связи между таблицами и создает дочерние свойства для связанных объектов. Например, IntelliSense покажет, что объектCustomer
имеет свойствоOrders
для всех заказов, связанных с этим клиентом.Сохраните изменения и закройте конструктор.
Сохраните проект.
Добавление кода для запроса к базе данных и отображение результатов
Из панели элементов перетащите элемент управления DataGridView на форму Windows Form по умолчанию для вашего проекта, Form1.
Дважды щелкните Form1, чтобы добавить код в событие
Load
формы.При добавлении таблиц в конструктор O/R, конструктор добавил объект DataContext для вашего проекта. Этот объект содержит код, который необходимо получить для доступа к этим таблицам, а также для доступа к отдельным объектам и коллекциям для каждой таблицы. Объект DataContext проекта называется на основе имени DBML-файла. Для этого проекта объект DataContext называется
northwindDataContext
.Вы можете создать экземпляр DataContext в коде и запросить таблицы, указанные конструктором O/R.
Добавьте следующий код в событие
Load
, чтобы выполнить запрос к таблицам, которые представлены как свойства вашего DataContext, и вычислить количество, сумму и среднее значение результатов. В примере используется предложениеAggregate
для запроса к одному результату, а предложениеGroup By
отображает среднее значение для сгруппированных результатов.Dim db As New northwindDataContext Dim msg = "" Dim londonCustomerCount = Aggregate cust In db.Customers Where cust.City = "London" Into Count() msg &= "Count of London Customers: " & londonCustomerCount & vbCrLf Dim averageOrderCount = Aggregate cust In db.Customers Where cust.City = "London" Into Average(cust.Orders.Count) msg &= "Average number of Orders per customer: " & averageOrderCount & vbCrLf Dim venezuelaTotalOrders = Aggregate cust In db.Customers Where cust.Country = "Venezuela" Into Sum(cust.Orders.Count) msg &= "Total number of orders from Customers in Venezuela: " & venezuelaTotalOrders & vbCrLf MsgBox(msg) Dim averageCustomersByCity = From cust In db.Customers Group By cust.City Into Average(cust.Orders.Count) Order By Average DataGridView1.DataSource = averageCustomersByCity 'Another way to grab the count and sum londonCustomerCount = (From cust in db.Customers Where cust.City = "London").Count() venezuelaTotalOrders = (From cust in db.Customers Where cust.Country = "Venezuela" Select cust.Orders).Sum()
Нажмите клавишу F5, чтобы запустить проект и просмотреть результаты.