EF - 需要两个字段?

时间:2013-11-22 19:15:34

标签: entity-framework data-annotations

有没有办法解决这个问题 (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约束为一个/或要求。它们不能都是空的。有没有办法做到这一点?

2 个答案:

答案 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