Мне нужно получить ApplicationDbContext внутри модели.
Я создаю атрибут Validation. Эта проверка проверит некоторые записи в базе данных и при необходимости выдаст ошибку.
public class MyModel
{
public int? ID { get; set; }
[MyValidationForName]
public string Name { get; set; }
}
public class MyValidationForName : ValidationAttribute
{
protected ValidationResult IsValid(object value, ValidationContext validationContext)
{
/* code here */
return new ValidationResult("This field contains an error");
}
}
Приведенный выше пример генерирует ошибку (DataAnnotation) при сохранении записи. Можно проверять только даты, длины и т. Д.
Но мне нужно запросить некоторые записи в базе данных. Для этого контекст БД не может быть передан в модель.
Во всех темах SO, которые я прочитал, объясняется, как выполнить проверку с помощью Remote и JS, а также поставить проверку на контроллер. Я не хочу этого.
Наиболее похожая тема SO: Использование контекста БД в пользовательском атрибуте проверки (при добавлении контекста он все еще не работает)
Может ли кто-нибудь помочь мне передать ApplicationDbContext в модель для выполнения запросов и проверить его с помощью ValidationAttribute?