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

Validation ASP.NET和EF Core-ModelState.IsValid对于由Scaffold DbContext生成的模型始终返回true,validation,asp.net-core-mvc,entity-framework-core,Validation,Asp.net Core Mvc,Entity Framework Core,我无法在ASP.NET核心控制器中验证Scaffold DbContext命令生成的模型 所需的/max-length属性配置都在EF core生成的上下文类的onModelCreating方法中 protected override void OnModelCreating( ModelBuilder modelBuilder ) { modelBuilder.Entity<ModelClass>( entity => { entity.ToTable

我无法在ASP.NET核心控制器中验证Scaffold DbContext命令生成的模型

所需的/max-length属性配置都在EF core生成的上下文类的onModelCreating方法中

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

        entity.Property( e => e.ModelClassCode )
              .IsRequired()
              .HasMaxLength( 30 );
使ModelState.IsValid为false的唯一方法是向模型类添加数据注释。我希望避免这种情况,因为运行scaffold命令将覆盖这些更改


我是不是遗漏了什么?有没有人可以给我举个例子?我看到的与验证相关的都使用数据注释。

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


请参见此处的
Scaffold DbContext
文档:

我相信验证框架依赖于属性上的数据注释。所以你需要它来进行模态验证。谢谢回复@Shyju。我希望避免模型中的数据批注,因为当我从数据库中重新生成模型时,这些批注将被覆盖。您可以尽可能使用
Scaffold DbContext
生成数据批注,而不是fluent api。使用以下命令行arg
-a |--data annotation尽可能使用DataAnnotation属性来配置模型。如果省略,输出代码将仅使用fluent API。
这样,
必需的
/`MaxLength`等将使用注释构建,并将为您提供验证支持。感谢@Smit的回复。昨天在查看ASP.NET核心文档时,我确实遇到了
-DataAnnotations
开关,这确实有效。在这一点上,我只是好奇为什么fluent API方法似乎无法验证。正如@Shyju指出的,数据验证框架依赖于注释。fluentapi是EF特有的东西EF本身不提供任何验证。
public IActionResult CreateModelClass( [FromBody]ModelClass modelClass ) {
    // ModelState.IsValid always returns true here