是否fluent API IsRequired()与属性上的[Required]属性完全相同?



如果我将[Required]属性放在模型中的属性上,那么如果没有提供值,<input>helper标记将抛出验证错误,但它也将影响数据库结构。

但是

modelBuilder.Entity<CartItem>(e =>
{
e.Property(e=>e.Quantity).IsRequired();
}

做同样的事?意思是这是否会导致以某种方式动态地将[Required]属性添加到属性中,以便<input>标签助手可以注意到它?

"意思是这会导致动态添加[必选]属性,以便标签帮助器可以注意到它?">

是的,正是这样。IsRequired[Required]最终将对数据库模式产生相同的影响,因为它将在表列上添加non-nullable约束。意味着财产是强制性的。关键的区别是我们只能使用流畅的API验证代码的第一种方法,而[Required]的所有方法。

事实上,虽然使用e.Property(e=>e.Quantity).IsRequired() attribute流畅的API而不是注释来获得相同的客户端&服务器端验证。而不是使用Required。问题是,基于Fluent API配置抛出的验证错误不会自动到达UI,但您可以在代码中捕获它,然后相应地响应它。此外,你可以在这里查看官方文件

相关内容

  • 没有找到相关文章

最新更新