【发布时间】:2022-08-02 23:59:51
【问题描述】:
例如,如果我请求的不是Item,而是CreateItemDto,它不仅具有Id 属性,我是否应该在Title 属性中使用DataAnnotations,如[Required] Item 类?因为它将在CreatedItemDto 中传递,使用[Required] 数据注释。
物品记录:
public record Item
{
public Guid Id { get; init; }
public string? Title { get; init; }
}
CreateItemDto 记录:
public record CreateItemDto
{
public Guid Id { get; init; }
[Required]
[Range(1, 20)]
public string? Title { get; init; }
}
在我的控制器中,类似的东西会采取它:
[HttpPost]
ActionResult<ItemDto> Create(CreateItemDto item)
{
var newItem = new Item() { Guid = Guid.NewGuid(), Title = item.Title };
return CreatedAtAction(nameof(Get), new { id = newItem.Id }, newItem );
}
-
这取决于几件事,但通常如果您的 DTO 使用注释有效,那么您可以假设进入数据库的数据是有效的,前提是您的数据库没有任何额外的验证,数据库不喜欢在您可能错过的地方不允许空值等从 dto 中取出验证。
标签: c# asp.net asp.net-mvc rest dto