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 实体:它是绑定到您的数据库的模型。
是否可以让 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 实体:它是绑定到您的数据库的模型。