Data Annotations are good for triggering simple validation on individual properties but aren't good for model level validation. You should implement IValidatableObject
on you entity. Something like this:
public class Grievance: IValidatebleObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (FileDate < Incident.IncidentDate
||(HearingDate.HasValue && HearingDate.Value < Incident.IncidentDate))
{
yield return new ValidationResult
("Dates invalid",
new[] { "FileDate", “HearingDate”, "Incident.IncidentDate" });
}
}
}
Reference: