title: Correct use of OOP in a three-layered c# asp.net database application
body: <p>I'm starting C# and would like to know if there is any problem in approach below:</p>
  
  <p><a href="https://i.stack.imgur.com/LtAnd.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/LtAnd.png" alt="enter image description here"></a></p>
  
  <p>Briefly, in the layers there would be instances similar to the following:</p>
  
  <p><strong>UI</strong></p>
  
  <pre><code>var userBll = _userBll.SaveUser(dtoUser); 
  </code></pre>
  
  <p><strong>BLL</strong></p>
  
  <pre><code>// Validations and other business rules
  return _userDal.SaveUser (dtoUser); // Request DAL
  </code></pre>
  
  <p><strong>DAL</strong></p>
  
  <pre><code>// Return the saved user to the database
  return userDb;
  </code></pre>
  
  <p>Is there a problem with this kind of approach, in which the UserBll class would contain the "SaveUser" method? Would not it be correct to have a User class responsible for calling the Save method? Something like:</p>
  
  <pre><code>var user = new User();
  user.SaveUser()
  </code></pre>
  
  <p>In this case would there be a redundancy between the User object class and the UserDTO data transport class?</p>
  
  <p>Sorry if this may sound like a silly question, but it really confuses me.</p>