Exemplarische Vorgehensweise: Abrufen und Anzeigen von Daten aus einem Domänendienst

In diesem Thema wird beschrieben, wie die Methode im Domänenkontext, die der gewünschten Domänendienst-Abfragemethode entspricht, in einer Silverlight-Anwendung aufgerufen wird und wie anschließend eine zusätzliche Filterung auf die Ergebnisse dieser Abfrage angewendet wird, um die zurückgegebenen oder angezeigten Entitäten einzuschränken.

Um in der Silverlight-Anwendung Daten abzurufen, rufen Sie die Methode im Domänenkontext auf, die der gewünschten Domänendienst-Abfragemethode entspricht. Eine Abfragemethode im Domänendienst mit dem Namen GetProducts verfügt z. B. über eine entsprechende Methode mit dem Namen GetProductsQuery im Domänenkontext. Sie rufen in der Silverlight-Anwendung GetProductsQuery auf, und diese Methode gibt ein EntityQuery-Objekt zurück.

Sie können in der Silverlight-Anwendung eine zusätzliche Filterung auf die Abfrage anwenden, um die zurückgegebenen Entitäten einzuschränken. Eine Abfragemethode kann jeden Datensatz aus der Tabelle "Products" zurückgeben, Sie möchten möglicherweise aber nur die Produkte mit einem Preiswert unter 100 anzeigen. Sie können LINQ und eine Teilmenge der LINQ-Abfrageoperatoren verwenden, um die von der Abfrage zurückgegebenen Ergebnisse zu ändern. Die folgende Liste enthält die verfügbaren Abfrageoperatoren:

  • Where

  • OrderBy

  • ThenBy

  • Skip

  • Take

Nachdem Sie die zusätzliche Filterung angewendet haben, übergeben Sie das EntityQuery-Objekt an einen Parameter in der Load-Methode, um die Abfrage auszuführen und die Ergebnisse abzurufen.

Wenn die Abfrage über ein QueryAttribute verfügt und die IsComposable-Eigenschaft auf false festgelegt ist, können Sie keine zusätzliche Filterung auf die Abfrage anwenden. In der Regel ist IsComposable nur bei Abfragen, die eine einzelne Entität zurückgeben, auf false festgelegt.

Sie können die Daten an ein beliebiges Silverlight-Steuerelement zur Darstellung von Daten binden. Mit dem DataGrid-Steuerelement können die Daten in einem Tabellenformat dargestellt werden.

In dieser exemplarischen Vorgehensweise wird beschrieben, wie Daten aus einem Domänendienst abgerufen und angezeigt werden. Es wird auch erläutert, wie der verfügbare Abfrageoperator verwendet wird, um eine zusätzliche Filterung auf eine Abfrage anzuwenden.

Erforderliche Komponenten

Für diese und die anderen exemplarischen Vorgehensweisen in der WCF RIA Services-Dokumentation müssen zusätzlich zu WCF RIA Services und dem WCF RIA Services-Toolkit mehrere erforderliche Programme installiert und korrekt konfiguriert werden, z. B. Visual Studio 2010, die Silverlight Developer-Laufzeit und das Silverlight-SDK. Zudem müssen Sie SQL Server 2008 R2 Express with Advanced Services installieren und konfigurieren und die AdventureWorks OLTP- und LT-Datenbanken installieren.

Ausführliche Anweisungen für jede dieser erforderlichen Komponenten finden Sie in den Themen unter Erforderliche Komponenten für WCF RIA Services. Folgen Sie den Anweisungen in diesen Themen, bevor Sie mit dieser exemplarischen Vorgehensweise fortfahren, um sicherzustellen, dass beim Ausführen der exemplarischen Vorgehensweisen für RIA Services so wenig Probleme wie möglich auftreten.

Diese exemplarische Vorgehensweise setzt voraus, dass Sie Exemplarische Vorgehensweise: Erstellen einer RIA Services-Projektmappe ausgeführt haben, und basiert auf der Anwendung, die in den dort beschriebenen Verfahren erstellt wurde.

So rufen Sie Daten aus einem Domänendienst ab und zeigen Sie sie an

  1. Öffnen Sie die Projektmappe "RIAServicesExample", die Sie anhand der Anweisungen im Thema Exemplarische Vorgehensweise: Erstellen einer RIA Services-Projektmappe erstellt haben.

  2. Öffnen Sie in der Silverlight-Anwendung die CodeBehind-Seite für "MainPage.xaml".

  3. Erstellen Sie eine EntityQuery-Instanz, indem Sie die GetCustomersQuery-Methode aufrufen.

  4. Filtern Sie die Kunden mithilfe der verfügbaren Abfragevorgänge.

  5. Übergeben Sie das Abfrageobjekt an die Load-Methode, und weisen Sie den Rückgabewert dem LoadOperation zu.

    Der folgende Code zeigt, wie Kunden aus dem Domänendienst abgerufen werden. In diesem Beispiel werden Kunden herausgefiltert, deren Telefonnummern mit 583 beginnen, und alphabetisch nach "LastName" sortiert. Die Ergebnisse werden in einem DataGrid angezeigt.

    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;
        }
    }
    

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen einer RIA Services-Projektmappe
Exemplarische Vorgehensweise: Hinzufügen von Abfragemethoden