Мы использовали подход DB-first для генерации моделей в базовом приложении. NET. DataAnnotations были помещены в класс метаданных «приятель», чтобы избежать записи в автоматически сгенерированный файл. Когда контроллер вызывает TryValidateModel, все работает хорошо, требуется свойство Name.
public partial class User
{
public string Name { get; set; }
}
[ModelMetadataType(typeof(UserMetaData))]
public partial class User : IValidatableObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { }
}
public class UserMetaData
{
[Required]
public string Name { get; set; }
}
На служебном уровне приложения мы хотим реализовать дополнительную проверку, которая также проверяет, действительны ли объекты в отношении аннотаций данных. , Это делается с помощью Validator.TryValidateObject()
, который успешно вызывает метод Validate, но игнорирует аннотации данных - пользователь действителен, даже с пустым именем.
TL; DR: MVC (веб-проект) знает, как считать данные аннотации, помещенные в «приятельский» класс с помощью атрибута ModelMetadataType, проект уровня службы - нет.
Я думал, что нашел ответ здесь , но, похоже, TypeDescriptor.AddProviderTransparent
не работает для . net core apps.
Буду признателен за любые идеи.