Мне любопытно, почему проверка данных выполняется с использованием классов друзей. Рассмотрим следующий пример, где MyEntity
является сущностью Linq-to-SQL или Linq-to-Entities, а приведенный ниже класс является частичным классом, расширяющим сущность.
[MetadataType(typeof(MyEntity.MyEntityMetadata))]
public partial class MyEntity
{
private class MyEntityMetadata
{
[Required(ErrorMessage = "The title is required.")]
public string Title { get; set; }
}
}
Почему дизайн такой? Когда они разрабатывали DataAnnotations, почему был выбран этот «шаблон друзей»? Почему бы не разместить атрибуты непосредственно в сущности?