noviembre 05, 2007

Modelos de LINQ to SQL como Data Contracts

Preparando unos ejercicios con el maestro Roberto Schatz la vez pasada, descubrimos un cambio importante (pero muy bueno, al fin) en el diseñador de modelos de LINQ to SQL, y tomé nota mental de comentarlo, así que finalmente aquí va.

El problema es cómo hacer que una clase generada en base al modelo sea serializable como DataContract al utilizarla en un servicio WCF. Hasta la Beta 1 de VS 2008 había una propiedad para cada tabla (o entidad) donde se podían incluir atributos personalizados, lo que dejaba la posibilidad aunque era bastante molesto.

Desde la Beta 2, basta hacer clic derecho en la superficie (no en una de la tablas), e ir a las propiedades del modelo (se puede llegar también por la hoja de propiedades, claro).


En la hoja de propiedades, basta elegir SerializationMode como Unidirectional (realmente no veo bien a qué viene), y voilá...

El resultado es que en el código generado quedan prolijamente declaradas las clases como:

[Table(Name="dbo.Categories")]
[DataContract()]
public partial class Category : INotifyPropertyChanging, INotifyPropertyChanged
{...}


y cada una de las propiedades públicas queda expuesta como DataMember.

Es un detalle mínimo pero me costó un rato encontrarlo, y espero salvarle ese tiempo a algunos.

1 comentario:

Anónimo dijo...

Ayudó!
Gracias!!

ivan