在IValidatableObject.Validate方法中访问数据库是个好主意吗?

我有一个模型课。 相关数据库表对两个字段(例如Column1和Column2)具有唯一约束。 我不确定在保存对象之前validation对象的最佳方法是什么。

我正在考虑实现IValidatableObject并在Validate方法中进行此validation。 这是个好主意吗? 我不确定,因为它需要从实体类中的DB读取数据。

public class Class1 :IValidatableObject { [Key] public int ID { get; set; } [Required] public int Column1 { get; set; } [Required] public int Column2 { get; set; } public IEnumerable Validate(ValidationContext validationContext) { using (DatabaseContext db = new DatabaseContext()) { //access DB to check if this combination of Column1 and Column2 already exists } } } 

我正在使用MVC4和EF 4.4。

UPDATE

您是否建议使用单独的validation器类而不是使用validation属性?

https://stackoverflow.com/a/16679307/1131855