One solution that I can think of is to create a DelegateVerifier of your own and put some logic in the VerifierCondition delegate that changes the error message depending on the Entity state.
private static Verifier GetBornBeforeHiredVerifier() {
string errorMessage = "Must be born before hired.";
string[] propertyNames = {Employee.PropertyMetadata.BirthDate.Name,
Employee.PropertyMetadata.HireDate.Name};
DelegateVerifier<Employee> v = new DelegateVerifier<Employee>(errorMessage, BornBeforeHiredCondition);
v.AddTriggers(Employee.PropertyMetadata.BirthDate.Name, Employee.PropertyMetadata.HireDate.Name);
v.VerifierOptions.ExecutionModes = VerifierExecutionModes.InstanceAndOnAfterSetTriggers;
return v;
}
private static VerifierResult BornBeforeHiredCondition(
Employee pEmp, TriggerContext pTriggerContext, VerifierContext pVerifierContext) {
if (pTriggerContext != null &&
pTriggerContext.Timing == TriggerTiming.BeforeSet) {
throw new VerifierException("BornBeforeHired verifier not implemented for Preset");
}
string errorMessage;
switch (pEmp.EntityAspect.EntityState) {
case EntityState.Added:
errorMessage = EntityState.Added.ToString();
break;
case EntityState.AllButDetached:
errorMessage = EntityState.AllButDetached.ToString();
break;
case EntityState.AnyAddedModifiedOrDeleted:
errorMessage = EntityState.AnyAddedModifiedOrDeleted.ToString();
break;
default:
errorMessage = "Default error message";
break;
}
return new VerifierResult(pEmp.BirthDate < pEmp.HireDate, errorMessage);
}
I hope this helps.