このチュートリアルでは、SQL Server データベースからデータを取得し、そのデータを DataGrid コントロールに表示します。 ADO.NET Entity Framework を使用して、データを表すエンティティ クラスを作成し、LINQ を使用して、エンティティ クラスから指定されたデータを取得するクエリを記述します。
[前提条件]
このチュートリアルを完了するには、次のコンポーネントが必要です。
Visual Studio。
AdventureWorks サンプル データベースがアタッチされている SQL Server または SQL Server Express の実行中のインスタンスへのアクセス。 AdventureWorks データベースは、GitHubからダウンロードできます。
エンティティ クラスを作成する
Visual Basic または C# で新しい WPF アプリケーション プロジェクトを作成し、
DataGridSQLExample
名前を付けます。ソリューション エクスプローラーでプロジェクトを右クリックし、[
追加] をポイントし、[新しい項目]選択します。 [新しい項目の追加] ダイアログ ボックスが表示されます。
[インストールされているテンプレート] ウィンドウで、[データ
] を選択し、テンプレートの一覧から [ADO.NET エンティティ データ モデル ] を選択します。 ファイルに
名前を付け、[ 追加] をクリックします。 エンティティ データ モデル ウィザードが表示されます。
[モデルのコンテンツの選択] 画面で、[データベースから EF Designer] をクリックし、[次へ] をクリックします。
[データ接続の選択] 画面で、AdventureWorksLT2008 データベースへの接続を指定します。 詳細については、「[データ接続の選択] ダイアログ ボックス」を参照してください。
名前が
で、[App.Config にエンティティ接続設定を として保存する] チェック ボックス オンになっていることを確認し、[次 ] をクリックします。 [データベース オブジェクトの選択] 画面で、[テーブル] ノードを展開し、Product テーブルと ProductCategory テーブルを選択します。
すべてのテーブルのエンティティ クラスを生成できます。ただし、この例では、これら 2 つのテーブルからのみデータを取得します。
[完了] をクリックします。
Product エンティティと ProductCategory エンティティは、エンティティ デザイナーに表示されます。
データを取得して表示する
MainWindow.xaml ファイルを開きます。
XAML エディターで、DataGrid タグと
<Grid>
タグの間に次の</Grid>
タグを追加して、DataGridという名前のdataGrid1
を追加します。<DataGrid Name="dataGrid1" />
DataGrid
DataGrid_SQL_EF_Step6 を使用したウィンドウ Windowを選択します。
プロパティ ウィンドウまたは XAML エディターを使用して、Window イベントの
Window_Loaded
という名前の Loaded のイベント ハンドラーを作成します。 詳細については、「方法: 単純なイベント ハンドラーを作成する」を参照してください。MainWindow.xaml の 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>
Windowのコードビハインドファイル (MainWindow.xaml.vb または MainWindow.xaml.cs) を開きます。
結合されたテーブルから特定の値のみを取得し、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