是否可以让Entity框架从模型中生成一个表,标记为非null的列而不使用模型属性上的[Required]
注释?
原因:
将对象发布到api,然后检查控制器中的ModelState.IsValid
。该属性应该是生成服务器端而不是来自外部,但如果我有属性[Required]
,则ModelState.IsValid
为假(在这种情况下,我返回BadRequest(ModelState);
)。< / p>
我可以告诉EF以其他方式使列不为空吗?
我想另一个解决方案是期望将另一个对象(某种DTO)发送到api然后进行映射。但是这个对象对于这个单独的属性看起来完全相同,这使得它看起来有点不必要,对吗?
答案 0 :(得分:6)
在您的DbContext
课程中使用Fluent API和IsRequired
方法,如下所示:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<YourEntity>().Property(t => t.YourProperty).IsRequired();
base.OnModelCreating(modelBuilder);
}
答案 1 :(得分:3)
如果我是你,我不会直接使用Entity Framework的实体,我会首先使用DTO并将其映射到EF实体,为什么?因为您的DTO和EF实体负有不同的责任。
DTO:数据传输对象,所以只需使用它来传输数据 EF实体:它是与您的数据库绑定的模型。