有没有办法解决这个问题 (Either Or Required Validation) 但是我没有将它应用于整个类,而只想在类中的两个特定字段上应用验证。
例如
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; }
}
我只想将Bar1和Bar2约束为一个/或要求。它们不能都是空的。有没有办法做到这一点?
答案 0 :(得分:4)
您可以通过实施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");
}
}
参考:
Using IValidatableObject with POCOs for More Complex Validations
答案 1 :(得分:0)
我认为你不能先用代码做到这一点!我认为你可以通过validation或者使用由FooModel中的插入触发的存储过程/函数来实现。 EF to AFTER INSERT Trigger