Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом пошаговом руководстве вы извлекаете данные из базы данных SQL Server и отображаете эти данные в элементе управления DataGrid. С помощью ADO.NET Entity Framework создайте классы сущностей, представляющие данные, и используйте LINQ для написания запроса, который извлекает указанные данные из класса сущностей.
Предпосылки
Для выполнения этого пошагового руководства требуются следующие компоненты:
Visual Studio.
Доступ к запущенному экземпляру SQL Server или SQL Server Express с примером базы данных AdventureWorks, подключенной к ней. Базу данных AdventureWorks можно скачать из GitHub.
Создание классов сущностей
Создайте проект приложения WPF в Visual Basic или C#, а затем назовите его
DataGridSQLExample
.В обозревателе решений щелкните проект правой кнопкой мыши, выберите пункт Добавить, а затем выберите Новый элемент.
Откроется диалоговое окно "Добавить новый элемент".
В области установленных шаблонов выберите Data и в списке шаблонов выберите модель данных объектов сущностей ADO.NET.
Присвойте файлу имя
AdventureWorksModel.edmx
и нажмите кнопку Добавить.Откроется конструктор модели данных сущностей.
На экране выбора содержимого модели выберите EF Designer из базы данных и нажмите Далее.
На экране выбора подключения к данным укажите подключение к базе данных AdventureWorksLT2008. Дополнительные сведения см. в диалоговом окне Выбор подключения к данным.
Убедитесь, что имя
AdventureWorksLT2008Entities
, установите флажок Сохранить параметры подключения сущности в App.Config как, а затем нажмите кнопку Далее.На экране "Выбор объектов базы данных" разверните узел "Таблицы" и выберите таблицы Product и ProductCategory.
Можно создать классы сущностей для всех таблиц; Однако в этом примере вы извлекаете данные только из этих двух таблиц.
Нажмите кнопку Готово.
Сущности Product и ProductCategory отображаются в конструкторе сущностей.
Получение и представление данных
Откройте файл MainWindow.xaml.
Установите значение свойства Width на объекте Window равным 450.
В редакторе XAML добавьте следующий тег DataGrid между тегами
<Grid>
и</Grid>
, чтобы добавить DataGrid с именемdataGrid1
.<DataGrid Name="dataGrid1" />
Выберите Window.
С помощью окна свойств или редактора XAML создайте обработчик событий для Window с именем
Window_Loaded
для события Loaded. Дополнительные сведения см. в разделе Практическое руководство. Создание простого обработчика событий.Ниже показан XAML для MainWindow.xaml.
Замечание
Если вы используете Visual Basic, в первой строке MainWindow.xaml замените
x:Class="DataGridSQLExample.MainWindow"
x:Class="MainWindow"
.<Window x:Class="DataGridSQLExample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="450" Loaded="Window_Loaded"> <Grid> <DataGrid Name="dataGrid1" /> </Grid> </Window>
Откройте файл программной части (MainWindow.xaml.vb или MainWindow.xaml.cs) для Window.
Добавьте следующий код, чтобы получить только определенные значения из присоединенных таблиц и установить свойство ItemsSource объекта DataGrid на результаты запроса.
using System.Data.Entity.Core.Objects; using System.Linq; using System.Windows; namespace DataGridSQLExample { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { AdventureWorksLT2008Entities dataEntities = new AdventureWorksLT2008Entities(); public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { var query = from product in dataEntities.Products where product.Color == "Red" orderby product.ListPrice select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice }; dataGrid1.ItemsSource = query.ToList(); } } }
Imports System.Data.Objects Class MainWindow Dim dataEntities As AdventureWorksLT2008Entities = New AdventureWorksLT2008Entities Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded Dim products As ObjectQuery(Of Product) = dataEntities.Products Dim query = _ From product In products _ Where product.Color = "Red" _ Order By product.ListPrice _ Select product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice dataGrid1.ItemsSource = query.ToList() End Sub End Class
Запустите пример.
Вы увидите DataGrid, в котором отображаются данные.
См. также
.NET Desktop feedback