我有一个在这些项目中花费的项目和时间模型,它使用带有Web API前端的DTO。我正试图弄清楚如何正确地进行验证。
我的大部分验证都是关于DTO类的属性,例如(对于TimeDTO
):
[Required, MinLength(3), MaxLength(50)]
public string Description { get; set; }
[Required]
public short Minutes { get; set; }
//...
但是,我还需要验证Time
实例上的日期是否在StartDate
&关联的EndDate
实例上的Project
。
要执行此操作,我需要从Project
实例的DbContext
字段中查找ProjectId
中的TimeDTO
。
因此,如果有一个选项是让TimeDTO
成为IValidatableObject
,那么我需要在模型中新建DbContext
,这对我来说似乎并不合适。
另一种选择是在Controller中验证它,但从那时起我在模型和控制器中进行了验证,所以我不确定...
有关如何更正确地执行此操作的任何建议"?