I am trying to use a combination of Domain Driven Design with Test Driven Development for this application I am building in ASP.NET MVC 3. My archictecture is set up with Repositories, Domain Models, View Models, Controllers and Views. All validation will be handled in the view model. I set up my view model to inherit from "IValidatableObject" so that my validation attributes and my custom validation that i set up in the "Validate" method are both executed when my controller method calls "ModelState.IsValid". The problem I am running into is accessing my repository in the Validate method of my view model. I need to access the repository to check for duplicate records in the database. It seems like the best idea would be to create a property of IRepository type and set that property by passing injecting my repository into the constructor of the view model. For example:\[code\]public class UserViewModel : IValidatableObject{ public UserViewModel(User user, IUserRepository userRepository) { FirstName = user.FirstName; LastName = user.LastName; UserRepository = userRepository; UserName = user.UserName; } public string UserName { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public IUserRepository UserRepository { get; set; } public IEnumerable<ValidationResult> Validate() { UserCriteria criteria = new UserCriteria { UserName = this.UserName }; IList<User> users = UserRepository.SearchUsers(criteria); if (users != null && users.count() > 0) { yield return new ValidationResult("User with username " + this.UserName + " already exists." } }}\[/code\]Do you guys think this is a good idea?