title: What is the difference between domain objects, POCOs and entities?
body: <p>I was under the impression they are all basically the same.  Are model objects also the same?</p>
  
  <p>Right now, in my architecture, I have:</p>
  
  <pre><code>class Person 
  {
  
      public string PersonId;        
      public string Name;
      public string Email;
  
      public static bool IsValidName() { /* logic here */ }
      public static bool IsValidEmail() { /* logic here */ }
  }
  
  
  class PersonService
  {
      private PersonRepository pRepository;
  
      PersonService()
      {
          pRepository = new PersonRepository();
      }
  
      public bool IsExistingEmail(string email)
      {
          //calls repo method to see if email is in db
      }
  
  
      public Person GetPerson(email)
      {
          return pRepository.Get(email);
      }
  
  
      public void SavePerson(Person p)
      {
          if (Person.IsValidEmail(p.Email) &amp;&amp; !IsExistingEmail(p.Email)
          {
              pRepository.Save(p);
          }
      }
  
  }
  
  
  class PersonRepository
  {
      public void Save(Person p)
      {
          //save to db
      }
  
      public Person Get(string email)
      {
          //get from db
      }
  
      public bool IsExistingEmail(string email)
      {
          //see if email in db
      }
  
  }
  </code></pre>
  
  <p>So which of the above classes are <code>POCO</code>, <code>Domain Object</code>, <code>Model object</code>, <code>entity</code>?</p>