Is there a way to do what this question is doing
(Either Or Required Validation)
but instead of applying it on the entire class, I only want to apply the validation on two specific fields within the class.
For example
public class FooModel {
[Required]
public string Name { get; set; }
[Required]
public decimal Cost { get; set; }
public int Bar1 { get; set; }
public float Bar2 { get; set; }
}
I only want to constrain Bar1 and Bar2 to be an either/or requirement. They cannot both be null. Is there a way to do this?
You can add server side validation by implementing IValidatableObject
public class FooModel: IValidatableObject
{
[Required]
public string Name { get; set; }
[Required]
public decimal Cost { get; set; }
public int Bar1 { get; set; }
public float Bar2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Bar1 == null && Bar2 == null)
yield return new ValidationResult("Either Bar1 or Bar2 must be specified");
}
}
Reference:
Using IValidatableObject with POCOs for More Complex Validations
I do not think you can do that by code first! I think you can do that by validation or by used stored procedure / function which be triggered by the inserting in the FooModel.
EF to AFTER INSERT Trigger