Definire un metodo custom in ADO.NET Data Services

di Marco Leoncini, in Silverlight 2.0,

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<T>) 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<T>, void, un tipo definito dal servizio, un tipo primitivo o un IQueryable<T>, 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.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi