#173 - Usare i WCF Data Services con liste e entità personalizzate
di Cristian Civera, in Windows Communication Foundation, 19 marzo 2010
I WCF Data Services, nati con il nome originale di ADO.NET Data Services, permettono di confenziare facilmente dei servizi che rispondono a chiamate REST e POX, e permettono la consultazione e la manipolazione di entità. Il loro ruolo sta diventando sempre più importante, grazie al processo di standardizzazione che stanno subendo attraverso l'Open Data Protocol la cui seconda versione sarà implementata nel .NET Framework 4.0 per supportare scenari più avanzati, ma che già è possibile sfruttare con la v1, con il .NET Framework 3.5.
Di fatto i WCF Data Services sfruttano la definizione e l'implementazione di un servizio base e generico che vuole il contesto da interrogare e manipolare. Solitamente si sfrutta un ObjectContext di ADO.NET Entity Framework, ma questo non è strettamente necessario. E' possibile infatti utilizzare un provider che sfrutta la reflection per ottenere le entità, il tutto semplicemente associando una classe personalizzata. In questo modo è possibile decidere di creare DTO e un sotto insieme delle entità da offrire tramite il servizio, rispetto all'intero domain model.
Bisogna quindi prima di tutto preparare una classe che contenga proprietà in lettura che restituiscono IQueryable
public class Products { public IQueryable<Product> All { get { return Enumerable.Range(1, 50).Select(n => new Product { ID = n, Name = "Prodotto " + n, Rating = (byte)(n / 50d * 5d) }).AsQueryable(); } } }
La classe Product è un DTO che come unico requisito deve avere l'attributo DataServiceKey per indicare quale proprietà funge da chiave identificativa. Ecco come la classe è definita.
[DataServiceKey("ID")]
public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public byte Rating { get; set; }
}Non resta che usare la classe peronalizzata all'interno del servizio e dare il permesso di accesso alla proprietà All.
public class ProductsService : DataService<Products> { public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("All", EntitySetRights.AllRead); } }
Ponendo che il servizio si chiami ProductsService.svc è possibile accedere alla lista dei prodotti mediante l'URI http://mioSito/ProductsService.svc/All.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
-
#1008 - Recuperare i dati da ListView di ASP.NET senza usare FindControl
-
Silverlight, 3 schermi ed il cloud
-
Oracle supporterà Entity Framework entro il 2011
-
Quando usare gli optional parameter di C# 4
-
Disinstallare la beta 2 prima di installare la RC di VS 2010
-
Visual Studio 2010 e .NET Framework 4.0: beta 2 e data di release RTM
-
12 Aprile 2010: a Las Vegas la prima mondiale di Visual Studio 2010 e Silverlight 4.0
-
Entity Framework e l'estendibilità del designer
-
#147 - Gestire tutte le eccezioni in WPF
-
Real Code Conference 4: Silverlight 4.0
-
Le novità nel .NET Framework 4.0 di WPF, WCF e WF

Commenti
mi piace
non mi piace
Facebook
Twitter










