Visual Studio 2012 C Sharp (C#) と SQL Server Express を使用しています。MSDN ウォークスルー: SQL Server データベースのデータを DataGrid コントロールに表示しようとしています。推奨される AdventureWorksLT2008 サンプル データベースを追加しました。私が従った指示は次のとおりです。
- Visual Basic または C# で新しい WPF アプリケーション プロジェクトを作成し、DataGridSQLExample という名前を付けます。
- ソリューション エクスプローラーでプロジェクトを右クリックし、[追加] をポイントして、[新しい項目] を選択します。( [新しい項目の追加] ダイアログ ボックスが表示されます。)
- [インストールされたテンプレート] ウィンドウで [データ] を選択し、テンプレートの一覧で [ADO.NET Entity Data Model] を選択します。
- ファイルに名前を付けて
AdventureWorksModel.edmx
、[追加] をクリックします。(エンティティ データ モデル ウィザードが表示されます。) - [モデル コンテンツの選択] 画面で、[データベースから生成] を選択し、[次へ] をクリックします。
- [データ接続の選択] 画面で、AdventureWorksLT2008 データベースへの接続を指定します。
- 名前が AdventureWorksLT2008Entities であること、および [エンティティ接続設定の保存先
App.Config
] チェック ボックスがオンになっていることを確認し、[次へ] をクリックします。 - [データベース オブジェクトの選択] 画面で、[テーブル] ノードを展開し、Product テーブルと ProductCategory テーブルを選択します。
- [完了] をクリックします。
データを取得して表示するには:
- ファイルを開き
MainWindow.xaml
ます。 - Window の Width プロパティを 450 に設定します。
- XAML エディターで、
<Grid>
とタグの間に次の DataGrid タグ</Grid>
を追加して、 という名前の DataGrid を追加しますdataGrid1
。 - ウィンドウを選択します。
- [プロパティ] ウィンドウまたは XAML エディターを使用して
Window_Loaded
、Loaded イベントの名前が付けられた Window のイベント ハンドラーを作成します。 - Window の分離コード ファイル (
MainWindow.xaml.vb
または) を開きます。MainWindow.xaml.cs
次のコードを追加して、結合されたテーブルから特定の値のみを取得し
ItemsSource
、DataGrid のプロパティをクエリの結果に設定します。using System; using System.Collections.Generic; using System.Data.Objects; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; 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 が表示されます。
実行すると、次のエラーが表示されます。
この行では、タイプ 'System.Data.Entity.DbSet' を 'System.Data.Objects.ObjectQuery' に暗黙的に変換できません: ObjectQuery products = dataEntities.Products;
私が試したものは何もありません - 何か提案はありますか?