Is it a good idea to access database in IValidatableObject.Validate method?

Viewed 2216

I have a model class. The related database table has a unique constraint on two fields (say Column1 and Column2). I am not sure what is the best way to validate the object before it is saved.

I am thinking to implement IValidatableObject and do this validation in the Validate method. Is it a good idea? I am not sure since it requires reading data from DB in a entity class.

public class Class1 :IValidatableObject
{

    [Key]
    public int ID { get; set; }

    [Required]
    public int Column1 { get; set; }

    [Required]
    public int Column2 { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        using (DatabaseContext db = new DatabaseContext())
        {
    //access DB to check if this combination of Column1 and Column2 already exists                      
        }

    }
}

I am using MVC4 and EF 4.4.

UPDATE

Would you recommend using a separate validator class instead of using validation attributes?

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

0 Answers
Related