title: POCO objects with lazy loading
body: <p>I'am new to ASP.NET MVC, IoC, POCO, etc. So I want to know is it OK to use such kind of architecture. </p>
  
  <p>This is my demo project.</p>
  
  <p><strong>Project.Core</strong> (<em>this assembly referenced by all project</em>)</p>
  
  <pre><code>public class User
  {
     public string Name {get; set;}
     public List&lt;UserGroup&gt; UserGroups{get; set}
  }
  public class UserGroup
  {
     public string Title{get; set;}
  }
  public interface IUserService 
  {
     User GetById(int id);
  }
  public interface IUserGroupService 
  {
     List&lt;UserGroup&gt; GetByUser(User user);
  }
  </code></pre>
  
  <p>Looks good, but how can I use lazy loading this way? I don't want to get <em>UserGroups</em> each time I'am getting <em>User</em>.</p>
  
  <p>My idea is to modify my <em>User</em> class this way:</p>
  
  <pre><code>public class User
  {
     public string Name {get; set;}
     public List&lt;UserGroup&gt; UserGroups
     {
         get { return _groups ?? (_groups = Services.UserGroupService.GetByUser(this)); }
         set { _group = value;}
     }
  }
  
  public class Services
  {
      // this class populates some kind with Unity
      public static IUserGroupService UserGroupService {get; set;}
  }
  </code></pre>
  
  <p>What is disadvantage of my solution? I don't like that my POCO object uses <em>IUserGroupService</em> instance.</p>