Definire un metodo custom in ADO.NET Data Services

ADO.NET Data Services permette di creare un servizio di tipo REST con estrema semplicità, esponendo mediante URI il modello a oggetti di EF.

Se questo non fosse sufficiente, è sempre possibile creare uno o più metodi che prendono il nome di Service Operations.

Il nuovo metodo deve essere dichiarato nel CodeBehind del file svc (la classe che eredita da DataService) e decorato con l'attributo WebGet (System.ServiceModel.Web.WebGetAttribute).

Le uniche limitazioni per il metodo sono sul tipo restituito che può essere un IEnumerable, void, un tipo definito dal servizio, un tipo primitivo o un IQueryable, al fine di supportare ulteriori operazioni di sorting, filtering, paging, ecc..

[WebGet] 
public int GetGalleryCount() 
{ 
 Return 2; 
}

Definito il metodo è necessario impostarne le policy di accesso, operazione da compiere nel metodo InizializeService, utilizzando il membro SetServiceOperationAccessRule dell'oggetto IDataServiceConfiguration, passato al metodo come argomento:

public static void InitializeService(IDataServiceConfiguration config) 
{ 
  config.SetEntitySetAccessRule("*", EntitySetRights.All); 
   config.SetServiceOperationAccessRule("GetGalleryCount ",ServiceOperationRights.All); 
}

Per richiamare il metodo in Silverlight, una volta istanziato il nostro servizio, utilizziamo il metodo BeginExecute al quale passiamo un nuovo URI costruito utilizzando il nome del metodo.

MyDataService.BeginExecute<int>(new Uri("GetGalleryCount", UriKind.Relative), (asyncResult) => 
{ 
    QueryOperationResponse<int> _i = _productManager.EndExecute<int>(asyncResult) as QueryOperationResponse<int>; 
    if (_i.Error == null) 
    { 
        _totalProductCount = _i.SingleOrDefault(); 
        //fai altro 
    } 
}, null);

Eventuali parametri richiesti dal metodo sono passati utilizzando querystring.

IL CONTENUTO
IN PRIMO PIANO
MEDIA
IN EVIDENZA
MISC