연습: DataGrid 컨트롤에서 SQL Server 데이터베이스의 데이터 표시
이 연습에서는 SQL Server 데이터베이스에서 데이터를 검색하여 DataGrid 컨트롤에 표시합니다. ADO.NET Entity Framework를 사용하여 데이터를 나타내는 엔터티 클래스를 만들고 LINQ를 사용하여 엔터티 클래스에서 지정된 데이터를 검색하는 쿼리를 작성합니다.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
Visual Studio 2010.
AdventureWorksLT2008 샘플 데이터베이스가 연결되어 있는 SQL Server 또는 SQL Server Express의 실행 중인 인스턴스에 액세스. AdventureWorksLT2008 데이터베이스는 CodePlex 웹 사이트에서 다운로드할 수 있습니다.
엔터티 클래스를 만들려면
Visual Basic 또는 C#에서 DataGridSQLExample이라는 새 WPF 응용 프로그램 프로젝트를 만듭니다.
솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 선택합니다.
새 항목 추가 대화 상자가 나타납니다.
설치된 템플릿 창에서 데이터를 선택하고 템플릿 목록에서 ADO.NET 엔터티 데이터 모델을 선택합니다.
파일의 이름을 AdventureWorksModel.edmx로 지정하고 추가를 클릭합니다.
엔터티 데이터 모델 마법사가 나타납니다.
모델 콘텐츠 선택 화면에서 데이터베이스에서 생성을 선택하고 다음을 클릭합니다.
데이터 연결 선택 화면에서 AdventureWorksLT2008 데이터베이스에 대한 연결을 제공합니다. 자세한 내용은 데이터 연결 선택 대화 상자를 참조하십시오.
이름이 AdventureWorksLT2008Entities이고 App.Config의 엔터티 연결 설정을 다음으로 저장 확인란이 선택되어 있는지 확인하고 다음을 클릭합니다.
데이터베이스 개체 선택 화면에서 테이블 노드를 확장하고 Product 및 ProductCategory 테이블을 선택합니다.
모든 테이블에 대해 엔터티 클래스를 생성할 수 있지만, 이 예제에서는 이 두 테이블에서만 데이터를 검색합니다.
마침을 클릭합니다.
Product 및 ProductCategory 엔터티가 Entity Designer에 표시됩니다.
데이터를 검색하여 표시하려면
MainWindow.xaml 파일을 엽니다.
XAML 편집기에서 다음 DataGrid 태그를 <Grid> 태그와 </Grid> 태그 사이에 추가하여 dataGrid1이라는 DataGrid를 추가합니다.
<DataGrid Name="dataGrid1" />
Window를 선택합니다.
속성 창 또는 XAML 편집기를 사용하여 Loaded 이벤트에 대해 Window_Loaded라는 Window의 이벤트 처리기를 만듭니다. 자세한 내용은 방법: 단순한 이벤트 처리기 만들기를 참조하십시오.
다음 예제에서는 MainWindow.xaml에 대한 XAML을 보여 줍니다.
참고
Visual Basic을 사용하는 경우에는 MainWindow.xaml의 첫 번째 줄에서 x:Class="DataGridSQLExample.MainWindow"를 x:Class="MainWindow"로 바꿉니다.
<Window x:Class="DataGridSQLExample.MainWindow" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="450" Loaded="Window_Loaded"> <Grid> <DataGrid Name="dataGrid1" /> </Grid> </Window>
Window에 대한 코드 숨김 파일(MainWindow.xaml.vb 또는 MainWindow.xaml.cs)을 엽니다.
조인된 테이블에서 특정 값만 검색하고 DataGrid의 ItemsSource 속성을 설정하는 다음 코드를 쿼리 결과에 추가합니다.
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
using System.Data.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) { ObjectQuery<Product> products = dataEntities.Products; var query = from product in products where product.Color == "Red" orderby product.ListPrice select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice }; dataGrid1.ItemsSource = query.ToList(); } } }
예제를 실행합니다.
데이터를 표시하는 DataGrid가 나타납니다.
참고 항목
참조
기타 리소스
How Do I: Get Started with Entity Framework in WPF Applications?