title: Split table in Entity Framework into multiple entities
body: <p>Here's the problem. I have table <strong>User</strong> which have quite a few fields. What I want to do is split this table into multiple entities like this:</p>
  
  <pre><code>User
    -&gt; GeneralDetails
    -&gt; CommunicationDetails
    -&gt; Address
  
  etc.
  </code></pre>
  
  <p>All goes well when extracting some fields from <strong>User</strong> into <strong>GeneralDetails</strong>. However, when I try to do the same thing for <strong>CommunicationDetails</strong> EF blows up and require to establish one-to-one relationship between <strong>GeneralDetails</strong> and <strong>CommunicationDetails</strong>.</p>
  
  <p>Sample entities definition:</p>
  
  <pre><code>public class User {
      public int UserId { get; set; }
  
      public string SomeField1 { get; set; }
      public int SomeField2 { get; set; }
  
      public virtual GeneralDetails GeneralDetails { get; set; }
      public virtual CommunicationDetails CommunicationDetails { get; set; }
      public virtual Address Address { get; set; }
  }
  
  public class GeneralDetails {   
      [Key]
      public int UserId { get; set; }
  
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public string Email { get; set; }
  
      public virtual User User { get;set; }
  }
  
  public class CommunicationDetails { 
      [Key]
      public int UserId { get; set; }
  
      public string Phone { get; set; }
      public string DeviceToken { get; set; }
  
      public virtual User User { get;set; }
  }
  
  public class Address {  
      [Key]
      public int UserId { get; set; }
  
      public string City { get; set; }
      public string Country { get; set; }
      public string Street { get; set; }
  
      public virtual User User { get;set; }
  }
  </code></pre>
  
  <p>Sample mapping:</p>
  
  <pre><code>modelBuilder.Entity&lt;User&gt;().
               HasRequired(user =&gt; user.GeneralDetails).
               WithRequiredPrincipal(details =&gt; details.User);
  
  modelBuilder.Entity&lt;User&gt;().
               HasRequired(user =&gt; user.CommunicationDetails).
               WithRequiredPrincipal(details =&gt; details.User);
  
  modelBuilder.Entity&lt;User&gt;().
               HasRequired(user =&gt; user.Address).
               WithRequiredPrincipal(details =&gt; details.User);
  
  modelBuilder.Entity&lt;User&gt;().ToTable("Users");
  modelBuilder.Entity&lt;GeneralDetails&gt;().ToTable("Users");
  modelBuilder.Entity&lt;Address&gt;().ToTable("Users");
  </code></pre>
  
  <p>Why on earth EF want this relationship? Is there any way this could be solved?</p>