.NET FluentValidation:针对相同类型的集合进行验证:重叠日期
.NET FluentValidation: Validate against a collection of the same type: overlapping dates
是否可以使用 FluentValidation 库对集合进行验证。例如,检查新对象的 start/end 日期是否与同一类型集合中的日期重叠?如果没有,有人对执行此类验证有任何建议吗?
如果您想验证一组项目,它们不应相互重叠 — 您可以使用我描述的方法 。当日期间隔相互重叠时,只需将 IEqualityComparer
实现更改为 return true
。
更新
如果您的集合与视图模型无关并放置在数据库中,例如,您可以使用简单的谓词 return 业务逻辑的结果(示例中使用的已知接口的构造函数注入):
public class ViewModelValidator
{
public ViewModelValidator(IIntervalService intervalService)
{
RuleFor(model => model.NewInterval)
.Must(interval => !intervalService.IsOverlapExistingIntervals(interval.StartDate, interval.EndDate));
}
}
是否可以使用 FluentValidation 库对集合进行验证。例如,检查新对象的 start/end 日期是否与同一类型集合中的日期重叠?如果没有,有人对执行此类验证有任何建议吗?
如果您想验证一组项目,它们不应相互重叠 — 您可以使用我描述的方法 IEqualityComparer
实现更改为 return true
。
更新
如果您的集合与视图模型无关并放置在数据库中,例如,您可以使用简单的谓词 return 业务逻辑的结果(示例中使用的已知接口的构造函数注入):
public class ViewModelValidator
{
public ViewModelValidator(IIntervalService intervalService)
{
RuleFor(model => model.NewInterval)
.Must(interval => !intervalService.IsOverlapExistingIntervals(interval.StartDate, interval.EndDate));
}
}