次の方法で共有


チュートリアル: ドメイン サービスのデータの取得と表示

このトピックでは、アクセスするドメイン サービスのクエリ メソッドに対応する Silverlight アプリケーションからドメイン コンテキストのメソッドを呼び出す方法と、そのクエリの結果に追加のフィルター処理を適用して返される (または表示される) エンティティを制限する方法について説明します。

Silverlight アプリケーションでデータを取得するには、使用するドメイン サービス クエリ メソッドに対応するドメイン コンテキストでメソッドを呼び出します。たとえば、GetProducts という名前のドメイン サービス内のクエリ メソッドの場合、ドメイン コンテキストには GetProductsQuery という名前の対応するメソッドがあります。Silverlight アプリケーションで、GetProductsQuery を呼び出すと、そのメソッドによって EntityQuery オブジェクトが返されます。

Silverlight アプリケーションでは、追加のフィルター処理をクエリに適用して、返されるエンティティを制限できます。クエリ メソッドによって製品テーブルからすべてのレコードが返される場合もありますが、価格の値が 100 未満の製品のみを表示することもできます。LINQ および LINQ クエリ演算子のサブセットを使用して、クエリから返された結果を変更できます。次の表に使用できるクエリ演算子を示します。

  • Where

  • OrderBy

  • ThenBy

  • Skip

  • Take

追加のフィルター処理を適用した後、EntityQuery オブジェクトを Load メソッドにパラメーターとして渡し、クエリを実行して結果を取得します。

クエリの QueryAttributeIsComposable プロパティが false に設定されている場合は、クエリに追加のフィルター処理を適用できません。通常は、単一のエンティティを返すクエリの場合のみ、IsComposablefalse に設定されます。

データを表す Silverlight コントロールにデータをバインドできます。DataGrid コントロールは、データを表形式で表すことができます。

このチュートリアルでは、ドメイン サービスのデータを取得して表示する方法について説明します。また、利用可能なクエリ演算子を使用してクエリに追加のフィルターを適用する方法についても説明します。

前提条件

このチュートリアル、および WCF RIA サービス のドキュメントで紹介されている他のチュートリアルでは、WCF RIA サービス および WCF RIA サービス Toolkit に加え、Visual Studio 2010 や Silverlight の開発者向けランタイムと SDK など、前提条件となっているいくつかのプログラムが適切にインストールおよび構成されている必要があります。また、SQL Server 2008 R2 Express with Advanced Services をインストールして構成し、AdventureWorks OLTP と LT データベースをインストールすることも必要です。

これらの各前提条件を満たしているかどうかを確認するための詳細な手順については、「WCF RIA Services の前提条件」ノード内のトピックを参照してください。このチュートリアルを進める前に、トピックに記載されている手順に従って、この RIA サービス チュートリアルを実行するときに発生する問題をできるだけ最小限に抑えるようにします。

このチュートリアルでは、「チュートリアル: RIA Services ソリューションの作成」が実行済みであることを前提としており、そこに記載されている手順で作成されたアプリケーションから処理を続行します。

ドメイン サービスのデータを取得して表示するには

  1. チュートリアル: RIA Services ソリューションの作成」で説明されている手順を実行して取得した RIAServicesExample ソリューションを開きます。

  2. Silverlight アプリケーションで、MainPage.xaml の分離コード ページを開きます。

  3. GetCustomersQuery メソッドを呼び出すことにより、EntityQuery インスタンスを作成します。

  4. 利用可能なクエリ操作を使用して、顧客にフィルターを適用します。

  5. クエリ オブジェクトを Load メソッドに渡し、戻り値を LoadOperation に代入します。

    ドメイン サービスから顧客を取得する方法を次のコード例に示します。電話番号が 583 で始まる顧客にフィルターが適用され、LastName のアルファベット順に並べ替えられます。結果は DataGrid に表示されます。

    Partial Public Class MainPage
        Inherits UserControl
    
        Private _customerContext As New CustomerDomainContext
    
        Public Sub New()
            InitializeComponent()
    
            Dim query As EntityQuery(Of Customer)
    
            query = _
                From c In Me._customerContext.GetCustomersQuery() _
                Where c.Phone.StartsWith("583") _
                Order By c.LastName
    
            Dim loadOp = Me._customerContext.Load(query)
            CustomerGrid.ItemsSource = loadOp.Entities
        End Sub
    
    End Class
    
    public partial class MainPage : UserControl
    {
        private CustomerDomainContext _customerContext = new CustomerDomainContext();
    
        public MainPage()
        {
            InitializeComponent();
            EntityQuery<Customer> query = 
                from c in _customerContext.GetCustomersQuery()
                where c.Phone.StartsWith("583")
                orderby c.LastName
                select c;
            LoadOperation<Customer> loadOp = this._customerContext.Load(query);
            CustomerGrid.ItemsSource = loadOp.Entities;
        }
    }
    

参照

処理手順

チュートリアル: RIA Services ソリューションの作成
チュートリアル: クエリ メソッドの追加