Gewusst wie: Ausführen von Datendienstabfragen (WCF Data Services)
WCF Data Services ermöglicht es Ihnen, mit den generierten Clientdatendienstklassen einen Datendienst aus einer .NET Framework-basierten Clientanwendung abzufragen. Für die Ausführung der Abfragen stehen folgende Methoden zur Verfügung:
Ausführen einer LINQ-Abfrage für die benannte DataServiceQuery-Instanz, die Sie aus dem DataServiceContext-Objekt abrufen, den das Tool Add Data Service Reference generiert.
Implizit durch Aufzählen über die benannte DataServiceQuery-Instanz, die Sie aus dem DataServiceContext-Objekt abrufen, den das Tool Add Data Service Reference generiert.
Explizit durch Aufrufen der Execute-Methode für die DataServiceQuery-Instanz oder der BeginExecute-Methode für die asynchrone Ausführung.
Weitere Informationen finden Sie unter Abfragen des Datendiensts (WCF Data Services).
Im Beispiel in diesem Thema werden der Northwind-Beispieldatendienst und automatisch generierte Clientdatendienstklassen verwendet. Dieser Dienst und die Clientdatenklassen werden erstellt, wenn Sie den WCF Data Services-Schnellstart ausführen.
Beispiel
Im folgenden Beispiel wird gezeigt, wie Sie eine LINQ-Abfrage definieren und ausführen, die alle Customers
für den Northwind-Datendienst zurückgibt.
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
Try
' Define a LINQ query that returns all customers.
Dim allCustomers = From cust In context.Customers _
Select cust
' Enumerate over the query obtained from the context.
For Each customer As Customer In allCustomers
Console.WriteLine("Customer Name: {0}", customer.CompanyName)
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
try
{
// Define a LINQ query that returns all customers.
var allCustomers = from cust in context.Customers
select cust;
// Enumerate over the query obtained from the context.
foreach (Customer customer in allCustomers)
{
Console.WriteLine("Customer Name: {0}", customer.CompanyName);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
Im folgenden Beispiel wird gezeigt, wie Sie den vom Tool Add Data Service Reference generierten Kontext verwenden, um eine Abfrage implizit auszuführen, die alle Customers
für den Northwind-Datendienst zurückgibt. Der URI der angeforderten Customers
-Entitätenmenge wird automatisch vom Kontext bestimmt. Die Abfrage wird implizit ausgeführt, wenn die Enumeration auftritt.
' Create the DataServiceContext using the service URI.
Dim context = New NorthwindEntities(svcUri)
' Define a new query for Customers.
Dim query As DataServiceQuery(Of Customer) = context.Customers
Try
' Enumerate over the query result, which is executed implicitly.
For Each customer As Customer In query
Console.WriteLine("Customer Name: {0}", customer.CompanyName)
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
// Define a new query for Customers.
DataServiceQuery<Customer> query = context.Customers;
try
{
// Enumerate over the query result, which is executed implicitly.
foreach (Customer customer in query)
{
Console.WriteLine("Customer Name: {0}", customer.CompanyName);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
Im folgenden Beispiel wird gezeigt, wie Sie den DataServiceContext verwenden, um eine Abfrage explizit auszuführen, die alle Customers
für den Northwind-Datendienst zurückgibt.
' Define a request URI that returns Customers.
Dim customersUri = New Uri(svcUri, "Northwind.svc/Customers")
' Create the DataServiceContext using the service URI.
Dim context = New DataServiceContext(svcUri)
Try
' Enumerate over the query result.
For Each customer As Customer In context.Execute(Of Customer)(customersUri)
Console.WriteLine("Customer Name: {0}", customer.CompanyName)
Next
Catch ex As DataServiceQueryException
Throw New ApplicationException( _
"An error occurred during query execution.", ex)
End Try
// Define a request URI that returns Customers.
Uri customersUri = new Uri(svcUri, "Northwind.svc/Customers");
// Create the DataServiceContext using the service URI.
DataServiceContext context = new DataServiceContext(svcUri);
try
{
// Enumerate over the query result.
foreach (Customer customer in context.Execute<Customer>(customersUri))
{
Console.WriteLine("Customer Name: {0}", customer.CompanyName);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
Siehe auch
Aufgaben
Gewusst wie: Hinzufügen von Abfrageoptionen zu einer Datendienstabfrage (WCF Data Services)