KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am working on rewriting my ASP.NET MVC app using the domain driven design priciples. I am trying to validate my User entity. So far I am able to validate basic rules (like the username and password being a non null/whitespace string). However one of the rules, I need to make sure that the username is unique. However I need access to the database inorder to do this, which means I would have to inject my IUserRepository into my User entity like so. public class User { private readonly IUserRepository _userRepository; public User(IUserRepository repo) { _userRepository = repo; } public override void Validate() { //Basic validation code if (string.IsNullOrEmpty(Username)) throw new ValidationException("Username can not be a null or whitespace characters"); if (string.IsNullOrEmpty(Password)) throw new ValidationException("Password can not be a null or whitespace characters"); //Complex validation code var user = _userRepository.GetUserByUsername(Username); if (user != null && user.id != id) throw new ValidationException("Username must be unique") } } However this seems ... well wrong. Making my entity depend on my repository seems like a bad idea (correct me if I am wrong). But having the validation code in the entity makes sense. Where is the best place to put complex validation code?
Tags (comma-separated)
Save Edits
Cancel