ASP.NET 和 EF Core - ModelState.IsValid 对于 Scaffold-DbContext 生成的模型始终返回 true

use*_*875 5 validation entity-framework-core asp.net-core-mvc

我一直无法在我的 ASP.NET Core 控制器中验证由 Scaffold-DbContext 命令生成的模型。

required/max length属性配置都在EF核心生成的context类的onModelCreating方法中。

protected override void OnModelCreating( ModelBuilder modelBuilder ) {
    modelBuilder.Entity<ModelClass>( entity => {
        entity.ToTable( "ModelClass", "schema" );

        entity.Property( e => e.ModelClassCode )
              .IsRequired()
              .HasMaxLength( 30 );
Run Code Online (Sandbox Code Playgroud)

我的控制器以 JSON 格式接收模型数据,但即使我发送无效数据,ModelState.IsValid 也始终返回 true。

public IActionResult CreateModelClass( [FromBody]ModelClass modelClass ) {
    // ModelState.IsValid always returns true here
Run Code Online (Sandbox Code Playgroud)

我让 ModelState.IsValid 为 false 的唯一方法是向模型类添加数据注释。我想避免这种情况,因为运行 scaffold 命令会覆盖这些更改。

我在这里错过了什么吗?有没有人可以指点我的例子?我见过的与验证相关的都是使用数据注释。

use*_*875 2

正如 @Smit 的评论中提到的,您可以使用命令--Data-Annotations中的开关Scaffold-DbContext来生成具有正确验证注释的模型。

请参阅此处的文档Scaffold-DbContexthttps ://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell