Я не смог проверить модели, сгенерированные командой Scaffold-DbContext, в моих основных контроллерах ASP.NET.ASP.NET и EF Core - ModelState.IsValid всегда возвращает true для моделей, созданных Scaffold-DbContext
Конфигурации требуемой/максимальной длины все находятся в методе onModelCreating класса контекста, сгенерированного ядром EF.
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<ModelClass>(entity => {
entity.ToTable("ModelClass", "schema");
entity.Property(e => e.ModelClassCode)
.IsRequired()
.HasMaxLength(30);
Мой контроллер получает данные для моделей как JSON, но ModelState.IsValid всегда возвращает истину, даже если я отправить недопустимые данные.
public IActionResult CreateModelClass([FromBody]ModelClass modelClass) {
// ModelState.IsValid always returns true here
Единственный способ я получил ModelState.IsValid ложным является добавление аннотаций данных в классе модели. Я хотел бы избежать этого, потому что выполнение команды scaffold будет перезаписывать эти изменения.
Я что-то упустил? Есть ли пример, на который меня могут навестить? Те, что я видел, связанные с проверкой, все используют аннотации данных.
Я считаю, что основа проверки основывается на аннотациях данных о свойствах. Поэтому вам нужно, чтобы модальная валидация работала. – Shyju
Спасибо за ответ @Shyju. Я надеюсь избежать аннотаций данных в модели, потому что они будут перезаписаны, когда я регенерирую модели из базы данных. – user7003875
Вы можете использовать 'Scaffold-DbContext' для генерации аннотаций данных вместо свободного Api, где это возможно. Используйте следующую командную строку arg '-a | --data-annotations Используйте атрибуты DataAnnotation для настройки модели, где это возможно. Если этот параметр опущен, выходной код будет использовать только свободный API. ' Таким образом' Обязательный'/'' MaxLength' и т. Д. Будут подкрашены с помощью аннотаций и предоставят вам поддержку проверки. – Smit