◆LinqDataSourceコントロール
ASP.NET 3.5では、LINQ to SQLクラスに対応した専用のLinqDataSourceコントロールが追加されました。LinqDataSourceは、ObjectDataSourceコントロールのようにデータベースのテーブルからレコードを抽出したり、レコードを追加、更新、削除することができます。
たとえば、LinqDataSourceを使用してGridViewにCategoriesテーブルを表示するには、「GridViewタスク」メニューのデータソースの選択から<新しいデータソース…>を選択します。「データソース構成ウィザード」が表示されたら「LINQ」を選択して[OK]をクリックします。
図 データソースの種類から「LINQ」を選択する
「コンテキストオブジェクトの選択」が表示されたら「NwindSQLDataContext」を選択して[次へ]をクリックします。NwindSQLDataContextは、「新しい項目の追加」ダイアログから「LINQ to SQLクラス」を選択して事前に作成しておきます。
図 ドロップダウンリストから「NwindSQLDataContext」を選択する
「データの選択の構成」が表示されたら「テーブル」から「Category(Table<Category>)」を選択して「CategoryID」列と「CategoryName」列を選択します。[完了]ボタンをクリックするとGridViewにLinqDataSourceがバインドされます。
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataSourceID="LinqDataSource1">
<Columns>
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID"
ReadOnly="True" SortExpression="CategoryID" />
<asp:BoundField DataField="CategoryName" HeaderText="CategoryName"
ReadOnly="True" SortExpression="CategoryName" />
</Columns>
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="NwindSQLDataContext"
Select="new (CategoryID, CategoryName)"
TableName="Category">
</asp:LinqDataSource>
図 CategoryテーブルからCategoryID列とCategoryName列を選択する
図 GridViewにCategoryテーブルが表示された
GridViewにレコードの編集、削除機能を付加するには、LinqDataSourceの「データの選択構成」でCategoryテーブルの列を選択するとき、すべての列を意味する「*」をチェックします。次に、[詳細設定]ボタンをクリックして「詳細設定」ダイアログからレコードの更新、削除をチェックして[OK]ボタンをクリックします。CategoryテーブルからCategoryID、CategoryName列などを個別にチェックして選択すると[詳細設定]ボタンがグレイアウトされて無効になります。LinqDataSourceは、レコードの楽観的排他制御を自動的に組み込みますのでテーブルのすべての列を選択する必要があります。
図 レコードの挿入、更新、削除を行うにはすべての列「*」を選択する
図 GridViewにレコードの編集、削除を追加した例