EF 模型 属性 在没有 [必需] 的情况下不为空

EF model property not null without [Required]

是否可以让 Entity framework 从模型中生成一个 table,并在模型的 [=31= 上不使用 [Required] 注释的情况下将列标记为非空]?

原因:

该对象已发布到 api,我在控制器中检查了 ModelState.IsValid。 属性 应该是在服务器端生成的,而不是来自外部,但是如果我有 属性 [Required]ModelState.IsValid 是错误的(在这种情况下我 return 与 BadRequest(ModelState);).

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

我想另一种解决方案是期望将另一个对象(某种 DTO)发送到 api,然后进行映射。但是除了这个 属性,那个对象看起来完全一样,这让它看起来有点不必要,对吧?

DbContext class 中使用 Fluent API and IsRequired 方法,如下所示:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<YourEntity>().Property(t => t.YourProperty).IsRequired();
    base.OnModelCreating(modelBuilder);
}

如果我是你我不会直接使用 Entity Framework 的实体,我会先使用 DTO 并将其映射到 EF 实体,为什么?因为你的DTO和EF Entity的责任不一样。

DTO : 数据传输对象,所以只用它来传输数据 EF 实体:它是绑定到您的数据库的模型。