我有一个案例,我在我的项目中有活动,可以有一个地址,类别和其他东西的列表。
在网站中,要求活动至少有一个地址是“访问地址”。
我有一个ValidationAttribute(CheckStateAttribute),每次我直接修改活动时都会触发。 但是当我修改连接到它的地址时它不会触发。
[CheckState]
public partial class Activity
{
public Activity()
{
this.Address = new HashSet<Address>();
}
public int ID { get; set; }
public string Title { get; set; }
public virtual ICollection<Address> Address { get; set; }
}
我的想法是将CheckState放在Address实体上(当然也会对它进行一些更改),但由于需求不仅仅是地址,因此验证活动不是一个好的解决方案。来自很多不同的实体。
有人知道在修改任何关系对象时验证实体“Activity”的方法吗?
答案 0 :(得分:0)
您将从IValidatableObject继承并实现Validate方法,如下所示
[MetadataType(typeof(SeasonMetaData))]
public partial class Season : IValidatableObject
{
#region IValidatableObject Members
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (this.StartDate.CompareTo(this.EndDate) >= 0)
{
yield return new ValidationResult("The Season End must be after the Season Start.", new String[] { "EndDate" });
}
}
#endregion
}