4

テーブルに格納されている日付が将来の日付であることを検証する必要があります。EFコードが最初にdb制約を検証して生成できるように、プロパティに注釈を付ける方法はありますか?

4

1 に答える 1

4

モデルのプロパティに属性を追加します。

[DateInTheFuture]
public DateTime ShippingDate { get; set; }

属性は通常の単純な検証属性です。

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class DateInTheFutureAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext context)
    {
        var futureDate = value as DateTime?;
        var memberNames = new List<string>() { context.MemberName };

        if (futureDate != null)
        {
            if (futureDate.Value.Date < DateTime.UtcNow.Date)
            {
                return new ValidationResult("This must be a date in the future", memberNames);
            }
        }

        return ValidationResult.Success;
    }
}
于 2012-12-21T18:07:03.473 に答える