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
Öffnen Sie die Projektmappe "RIAServicesExample", die Sie anhand der Anweisungen im Thema Exemplarische Vorgehensweise: Erstellen einer RIA Services-Projektmappe erstellt haben.
Öffnen Sie in der Silverlight-Anwendung die CodeBehind-Seite für "MainPage.xaml".
Erstellen Sie eine EntityQuery-Instanz, indem Sie die
GetCustomersQuery
-Methode aufrufen.Filtern Sie die Kunden mithilfe der verfügbaren Abfragevorgänge.
Ü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