RIA Services: Paso a paso (II)
En un post anterior hablaba sobre RIA Services y se empezo con un ejemplo sencillo de cómo crear una aplicación con RIA Services. En este post toca explicar en más detalles algunas de las cosas que vimos en ese post anterior.
Al crear el DomainService aparecía un diálogo como este:
Si una vez generado el DomainService, vamos al fichero SuppliersService.cs veremos que el código que se ha generado es el siguiente:
[EnableClientAccess()] public class SuppliersService : LinqToEntitiesDomainService<NorthwindEntities> { public IQueryable<Suppliers> GetSuppliers() { return this.Context.Suppliers; } public void InsertSuppliers(Suppliers suppliers) { this.Context.AddToSuppliers(suppliers); } public void UpdateSuppliers(Suppliers currentSuppliers, Suppliers originalSuppliers) { this.Context.AttachAsModified(currentSuppliers, originalSuppliers); } public void DeleteSuppliers(Suppliers suppliers) { if ((suppliers.EntityState == EntityState.Detached)) { this.Context.Attach(suppliers); } this.Context.DeleteObject(suppliers); } }
public IQueryable<Suppliers> GetSuppliers(string city) { return (from c in this.Context.Suppliers where c.City == city select c); }
SuppliersContext context = new SuppliersContext(); gridRiaDemo.ItemsSource = context.Suppliers; context.LoadSuppliers("London");
En esta solución hemos modificado el servidor, para que exponga un método con el parámetro por el que queremos filtrar, pero sin cambiar el método GetSuppliers, sin añadir el parámetro, también podríamos usar una sobrecarga que se genera en el proxy cliente para obtener el mismo resultado:
Esto es posible porque al generarse el proxy en el cliente no se genera única y exclusivamente el método que exponemos. Por cada método se crean tres sobrecargas distintas en el cliente, que nos permiten cosas como las que acabamos de ver.
Si vemos el código generado veremos lo siguiente:
#region LoadSuppliers method overloads /// <summary> /// Invokes the server-side method 'GetSuppliers' and loads the result into <see cref="Suppliers"/>. /// </summary> [LoadMethod(typeof(Suppliers))] public void LoadSuppliers() { this.LoadSuppliers(null, MergeOption.KeepCurrentValues, null); } /// <summary> /// Invokes the server-side method 'GetSuppliers' and loads the result into <see cref="Suppliers"/>. /// </summary> [LoadMethod(typeof(Suppliers))] public void LoadSuppliers(IQueryable<Suppliers> query, object userState) { this.LoadSuppliers(query, MergeOption.KeepCurrentValues, userState); } /// <summary> /// Invokes the server-side method 'GetSuppliers' and loads the result into <see cref="Suppliers"/>. /// </summary> [LoadMethod(typeof(Suppliers))] public void LoadSuppliers(IQueryable<Suppliers> query, MergeOption mergeOption, object userState) { base.Load("GetSuppliers", null, query, mergeOption, userState); } #endregion
Y hasta aquí este post, esperamos explicar algunos detalles interesantes de RIA Services mas adelante.
Escrito por Ibon Landa
Fuente: Yo sólo pasaba por aquí pero ya que estoy…
Related posts:
- Silverlight 3 y .NET RIA Services Brad Abrams ha publicado en su blog una magnífica serie...
Related posts brought to you by Yet Another Related Posts Plugin.










You must be logged in to post a comment.