title: Circular reference issue in 3-tier architecture C#
body: <p>I want to build a web application with 3-tier architecture in ASP.NET. But I am getting a problem of circular referencing.</p>
  
  <p>I have 3 layer:</p>
  
  <blockquote>
    <ol>
    <li>Application layer containing UI.</li>
    <li>Business layer containing all the logic and domain classes.</li>
    <li>Data layer containing all database interaction methods.</li>
    </ol>
  </blockquote>
  
  <p>I am using the data layer methods in business layer to perform database operations and in these methods I need to pass domain class object to data layer but it can not be done due to circular referencing.</p>
  
  <p>For example I have a <code>Person</code> domain class containing some properties and methods. Now I want to insert that <code>Person</code> into database. I have a method in Person class, named as <code>InsertPerson()</code>. In this method body, I have to call the function of Data layer to insert into database. But I am not able to pass the whole person object into data layer method as data layer reference is added to business layer and vice-versa is not possible. </p>
  
  <p>So how can I avoid this problem? Please suggest.</p>