Las clases de metadatos

En este post vamos a seguir profundizando en las características de RIA Services. En este caso vamos a hablar sobre las clases para los metadatos y las cosas que podemos hacer con ellas.

En los post anteriores hemos ido viendo un ejemplo de cómo crear una aplicación RIA haciendo uso de RIA Services.

En uno de los pasos, al crear el DomainService para exponer los servicios al cliente, nos salía una ventana como esta que pongo a continuación, desde la cual configurábamos la parte del modelo de datos que queremos exponer. Recordad que para crear el modelo hacíamos uso de Entity Framework.

9.1

En la parte inferior hay una opción que indica si deben generarse las clases de metadatos. En los post anteriores no habías comentado lo que hace esta opción y para qué sirve; ahora llega el momento de hacerlo.

Las clases de metadatos son clases parciales que nos va a permitir añadir más información a otros clases parciales.

En el ejemplo que estamos viendo estamos usando un modelo de datos de Entity Framework. Si viésemos el código generado al crear el modelo (podemos verlo en Northwind.Designer.cs) con nuestra entidad Suppliers, veríamos que existe una clase partial llamada Suppliers, con la definición de esta entidad.

public partial class Suppliers : global::System.Data.Objects.DataClasses.EntityObject
 
Las clases de metadatos nos va a permitir añadir más información a estas clases autogeneradas, por ejemplo, añadir un campo más que no está en el modelo o simplemente completar la información que ya existe y que no está representada en el modelo; si un campo en obligatorio, si soporta cierto rango de valores etc….Lo que hacemos es completar el modelo.
 
Esta información extra se podría hacer modificando directamente las clases del modelo, pero al ser código autogenerado habría muchas opciones de perderlo en alguna modificación, por lo que es más recomendable hacerlo en una clase diferente.
 
Seleccionando el check de “generar clases de metadatos” lo que se hace es generar automáticamente la estructura de la clases de metadatos para todas las entidades del modelo. En nuestro ejemplo, nos genera el fichero SuppliersService.metada.cs, para poder añadir información extra a la entidad Suppliers.
 
Si no hubiéramos seleccionado esta opción siempre podríamos crear estas clases posteriormente, pero si tenemos muchas entidades puede ser un poco pesado hacerlo, así que si nos lo genera mejor.
 

image

Si veis la definición de la clase de metadatos verías algo así:

[MetadataTypeAttribute(typeof(Suppliers.SuppliersMetadata))]
public partial class Suppliers

A través de los atributos podemos añadir información, por ejemplo, añadir restricciones a las propiedades de la clase; si es obligatorio, que debe cumplir una expresión regular, un determinado tamaño etc..…incluso podríamos añadir nuestro propio validador personalizado.

[Required] [RegularBLOCKED EXPRESSION] public string Name;

Y por qué es útil esto para RIA Services?

Pues porque RIA Servives es capaz de usar esta información que le suministramos y respectará y usará estas restricciones durante la validación y la generación del código cliente.

Por ejemplo, si hiciésemos una aplicación con Silverligth usando DataGrid o el FormData esta información nos será de gran utilidad.

image

image

Published 2/7/2009 11:00 por Ibon Landa
Archivado en:
Comparte este post:
http://geeks.ms/blogs/ilanda/archive/2009/07/02/las-clases-de-metadatos.aspx

Comentarios

# re: Las clases de metadatos

Hola Ibon

A propósito del comentario del post sobre los atributos de las propiedades en clases para por ejemplo hacer validaciones, llevaba un tiempo dándole vuenltas a como poder especificar información de validacion para un campo de una BBDD que se representa en memoria como una propiedad pública de una clase, y, la verdad, es que esto que explicas se acerca mucho a lo que busco

¿sabes si fuera de RIA existe algo que se haya hecho para reutilizar o inspirarme?

Gracias

Saturday, July 04, 2009 9:29 AM por Julio Trujillo Leon

# re: Las clases de metadatos

Este tema de los metadatos es una característica de Entity Framework, así que podrías usar esta tecnología fuera de RIA Services.

Saturday, July 04, 2009 11:23 AM por Ibon Landa

# WCF RIA Services. Resumen

Después de echar la bronca a un “mal” compañero por no leerme y preguntarme sobre RIA Services, he decidido

Thursday, December 31, 2009 11:52 AM por Yo sólo pasaba por aquí pero ya que estoy....

# WCF RIA Services. Resumen

Después de echar la bronca a un “mal” compañero por no leerme y preguntarme sobre RIA Services, he decidido

Thursday, December 31, 2009 11:53 AM por Yo sólo pasaba por aquí pero ya que estoy...