Procedura: definire un'operazione del servizio (WCF Data Services)How to: Define a Service Operation (WCF Data Services)

WCF Data ServicesWCF Data Services espone i metodi definiti nel server come operazioni del servizio. expose methods that are defined on the server as service operations. Operazioni del servizio consentono a un servizio dati per fornire l'accesso tramite un URI a un metodo definito nel server.Service operations allow a data service to provide access through a URI to a method that is defined on the server. Per definire un'operazione del servizio, si applicano le [WebGet] o [WebInvoke] attributo al metodo.To define a service operation, apply the [WebGet] or [WebInvoke] attribute to the method. Per supportare gli operatori di query, l'operazione di servizio deve restituire un IQueryable<T> istanza.To support query operators, the service operation must return an IQueryable<T> instance. L'accesso ai dati sottostanti da parte delle operazioni del servizio può essere eseguito tramite la proprietà CurrentDataSource su DataService<T>.Service operations may access the underlying data source through the CurrentDataSource property on the DataService<T>. Per ulteriori informazioni, vedere operazioni del servizio.For more information, see Service Operations.

Nell'esempio incluso in questo argomento viene definita un'operazione del servizio denominata GetOrdersByCity che restituisce un'istanza di IQueryable<T> filtrata relativa a Orders e agli oggetti Order_Details correlati.The example in this topic defines a service operation named GetOrdersByCity that returns a filtered IQueryable<T> instance of Orders and related Order_Details objects. Nell'esempio viene eseguito l'accesso all'istanza di ObjectContext che rappresenta l'origine dati per il servizio dati Northwind di esempio.The example accesses the ObjectContext instance that is the data source for the Northwind sample data service. Questo servizio viene creato quando si completa la Guida rapida di WCF Data Services.This service is created when you complete the WCF Data Services quickstart.

Per definire un'operazione del servizio nel servizio dati NorthwindTo define a service operation in the Northwind data service

  1. Nel progetto del servizio dati Northwind aprire il file Northwind.svc.In the Northwind data service project, open the Northwind.svc file.

  2. Nella classe Northwind definire un metodo dell'operazione del servizio denominato GetOrdersByCity nel modo seguente:In the Northwind class, define a service operation method named GetOrdersByCity as follows:

    [WebGet]
    public IQueryable<Order> GetOrdersByCity(string city)
    
    <WebGet()> _
    Public Function GetOrdersByCity(ByVal city As String) As IQueryable(Of Order)
    
  3. Nel metodo InitializeService della classe Northwind aggiungere il codice seguente per abilitare l'accesso all'operazione del servizio:In the InitializeService method of the Northwind class, add the following code to enable access to the service operation:

    config.SetServiceOperationAccessRule(
        "GetOrdersByCity", ServiceOperationRights.AllRead);
    
    config.SetServiceOperationAccessRule( _
        "GetOrdersByCity", ServiceOperationRights.AllRead)
    

Per eseguire una query sull'operazione del servizio GetOrdersByCityTo query the GetOrdersByCity service operation

  • In un browser immettere uno degli URI indicati di seguito per richiamare l'operazione del servizio definita nell'esempio seguente:In a Web browser, enter one of the following URIs to invoke the service operation that is defined in the following example:

    • http://localhost:12345/Northwind.svc/GetOrdersByCity?city='London'

    • http://localhost:12345/Northwind.svc/GetOrdersByCity?city='London'&$top=2

    • http://localhost:12345/Northwind.svc/GetOrdersByCity?city='London'&$expand=Order_Details&$orderby=RequiredDate desc

EsempioExample

Nell'esempio seguente viene implementa un'operazione del servizio denominata GetOrderByCity nel servizio dati Northwind.The following example implements a service operation named GetOrderByCity on the Northwind data service. Questa operazione usa ADO.NET Entity Framework per restituire un set di oggetti Orders e di oggetti Order_Details correlati come istanza di IQueryable<T> in base al nome di città specificato.This operation uses the ADO.NET Entity Framework to return a set of Orders and related Order_Details objects as an IQueryable<T> instance based on the provided city name.

Nota

Gli operatori di query sono supportati su questo endpoint dell'operazione del servizio in quanto il metodo restituisce un'istanza di IQueryable<T>.Query operators are supported on this service operation endpoint because the method returns an IQueryable<T> instance.

[WebGet]
public IQueryable<Order> GetOrdersByCity(string city)
{
    if (string.IsNullOrEmpty(city))
    {
        throw new ArgumentNullException("city",
            "You must provide a value for the parameter'city'.");
    }

    // Get the ObjectContext that is the data source for the service.
    NorthwindEntities context = this.CurrentDataSource;

    try
    {

        var selectedOrders = from order in context.Orders.Include("Order_Details")
                             where order.Customer.City == city
                             select order;

        return selectedOrders;
    }
    catch (Exception ex)
    {
        throw new ApplicationException(string.Format(
            "An error occurred: {0}", ex.Message));
    }
}
<WebGet()> _
Public Function GetOrdersByCity(ByVal city As String) As IQueryable(Of Order)
    If String.IsNullOrEmpty(city) Then
        Throw New ArgumentNullException("city", _
            "You must provide a value for the parameter'city'.")
    End If

    ' Get the ObjectContext that is the data source for the service.
    Dim context As NorthwindEntities = Me.CurrentDataSource

    Try
        Dim selectedOrders = From order In context.Orders.Include("Order_Details") _
                                 Where order.Customer.City = city _
                                 Select order
        Return selectedOrders
    Catch ex As Exception
        Throw New ApplicationException("An error occurred: {0}", ex)
    End Try
End Function

Vedere ancheSee Also

Definizione di WCF Data ServicesDefining WCF Data Services