Tengo curiosidad de por qué la validación de datos se realiza mediante clases de compañeros. Considere el siguiente ejemplo, donde MyEntity
es una entidad Linq-to-SQL o Linq-to-Entities, y la clase siguiente es una clase parcial que mejora la entidad.¿Por qué se usan clases de amigos para la validación?
[MetadataType(typeof(MyEntity.MyEntityMetadata))]
public partial class MyEntity
{
private class MyEntityMetadata
{
[Required(ErrorMessage = "The title is required.")]
public string Title { get; set; }
}
}
¿Por qué es el diseño así? Cuando diseñaron DataAnnotations, ¿por qué se seleccionó este "patrón de amigos"? ¿Por qué no colocar los atributos directamente en la entidad?
Según entiendo, le permite ampliar las características fuera del diseñador. Odiaría ajustar los atributos de los metadatos solo para que la próxima actualización del diseñador los elimine por completo. –
Responsabilidad individual ¿Principal? –