Pregunta

Estoy usando una clase generada como modelo, y me gustaría añadir DataAnnotation atribuye a algunas de sus propiedades. Como se trata de un código generado, no quiero añadir las anotaciones directamente. ¿Hay otra manera de unirlos a una propiedad?

Yo había pensado en hacer el modelo de una interfaz, y el uso de una clase parcial para obtener la clase generada a suscribirse a él. ¿Hay una solución menos complicada, suponiendo que habría incluso trabajar?

¿Fue útil?

Solución

Sí hay. Hay que crear la clase de metadatos que tendrá las mismas propiedades que su modelo original, y conectarlo a su modelo con atributos MetadataType:

[MetadataType(typeof(MyModelMetadata))]
public partial class OriginalMyModel
{
}

public class MyModelMetadata
{
    [Required]
    public string MyProperty;  

    // ...
}

En el modelo original se ebove ejemplo es la clase del modelo adecuado, y MyModelMetadata es una clase usada solamente para anotar propiedades. MyModelMetadata deben tener las mismas propiedades que el modelo tiene.

Otros consejos

Puede utilizar el atributo MetadataType en su clase:

http://msdn.microsoft.com /en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

En la práctica, he visto los metadatos pierden la sincronización con un modelo generado con bastante frecuencia, sin embargo, que puede conducir a algunos dolores de cabeza. Es posible que desee ver en un mecanismo de validación alternativo en lugar de anotaciones de datos.

He estado usando Fluido Validación , que es muy fácil de aprender y comenzar a usar. Hay incluso una validación Fluido a XVal pieza integración en Fluido Validación 2.0 (todavía en fase beta) que puede traer en su proyecto para la validación del lado del cliente.

Fluido de validación le permite definir su validación en una clase separada. Todo lo que tendría que hacer es añadir un atributo a la clase generada diciéndole que lo validador de usar, lo que podría lograrse a través de clases parciales.

Como alternativa, puede crear modelos específicos de vista que se asignan a los de su modelo de dominio que contienen las anotaciones de datos. En ese caso, simplificar la asignación de ida y vuelta con algo así como AutoMapper . Entonces, si el modelo de dominio cambia, se obtiene en tiempo de compilación errores frente al enfoque de metadatos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top