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.
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
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] [RegularExpression(“[A-Z][A-Za-z0-9]*”)] [StringLength(32)] 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.
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
Este tema de los metadatos es una característica de Entity Framework, así que podrías usar esta tecnología fuera de RIA Services.
Después de echar la bronca a un “mal” compañero por no leerme y preguntarme sobre RIA Services, he decidido
Después de echar la bronca a un “mal” compañero por no leerme y preguntarme sobre RIA Services, he decidido