没有[必需]

时间:2017-10-24 15:56:00

标签: c# entity-framework .net-core entity-framework-core asp.net-core-2.0

是否可以让Entity框架从模型中生成一个表,标记为非null的列而不使用模型属性上的[Required]注释?

原因:

将对象发布到api,然后检查控制器中的ModelState.IsValid。该属性应该是生成服务器端而不是来自外部,但如果我有属性[Required],则ModelState.IsValid为假(在这种情况下,我返回BadRequest(ModelState);)。< / p>

我可以告诉EF以其他方式使列不为空吗?

我想另一个解决方案是期望将另一个对象(某种DTO)发送到api然后进行映射。但是这个对象对于这个单独的属性看起来完全相同,这使得它看起来有点不必要,对吗?

2 个答案:

答案 0 :(得分:6)

在您的DbContext课程中使用Fluent APIIsRequired方法,如下所示:

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实体:它是与您的数据库绑定的模型。