title: Fluent API issue - Multiplicity is not valid in Role
body: <p>Im trying to figure out this issue; (Ef6)</p>
  
  <p>I have three tables, 'Goal' , 'GoalType', 'GoalBudget'. I have a one to one between Goal and GoalType which works fine, but when I do the same with GoalBudget which does not work - when I 'update-database' I get this error: </p>
  
  <p>Goal_GoalBudget_Source: : Multiplicity is not valid in Role 'Goal_GoalBudget_Source' in relationship 'Goal_GoalBudget'. Because the Dependent Role refers to the key properties, the upper bound of the multiplicity of the Dependent Role must be '1'.</p>
  
  <p>What is the issue -
  many Thanks</p>
  
  <pre><code>public class Goal
  {
      public int GoalId {get;set;}
      public string Name { get; set; }
      public string Description { get; set; }
      public decimal TargetAmount { get; set; }
  
      public int GoalBudgetId { get; set; }
      public int GoalTypeId { get; set; }
      // Navigaiton Properties
      public virtual GoalType GoalType { get; set; }
      public virtual GoalBudget GoalBudget{ get; set; }
  }
  
  public class GoalBudget
  {
      public GoalBudget()
      {
          Goals = new List&lt;Goal&gt;();
      }
      public int GoalBudgetId { get; set; }
      public DateTime Created { get; set; }
      // Navigation Property
      public ICollection&lt;Goal&gt; Goals { get; set; }
  }
  
  public class GoalType
  {
      public GoalType()
      {
          Goals = new List&lt;Goal&gt;();
      }
      public int GoalTypeId {get;set;}
      public string Name { get; set; }
      // Navigation Property
      public ICollection&lt;Goal&gt; Goals { get; set; }
  }
  </code></pre>
  
  <p>The Config is :</p>
  
  <pre><code>protected override void OnModelCreating(DbModelBuilder modelBuilder)
      {
          modelBuilder.Conventions.Remove&lt;PluralizingTableNameConvention&gt;();
          // GOAL 
          modelBuilder.Entity&lt;Goal&gt;().Property(n =&gt; n.GoalId).IsRequired();
          modelBuilder.Entity&lt;Goal&gt;().Property(n =&gt; n.GoalId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
          modelBuilder.Entity&lt;Goal&gt;().Property(n =&gt; n.Name).IsRequired();
          modelBuilder.Entity&lt;Goal&gt;().Property(n =&gt; n.Name).HasMaxLength(50);
          modelBuilder.Entity&lt;Goal&gt;().Property(n =&gt; n.TargetAmount).IsRequired();
  
          //-
          modelBuilder.Entity&lt;Goal&gt;().HasKey(k =&gt; k.GoalId);
          modelBuilder.Entity&lt;Goal&gt;().HasRequired(o =&gt; o.GoalType).WithMany(o =&gt; o.Goals).HasForeignKey(k =&gt; k.GoalTypeId) ;
          modelBuilder.Entity&lt;Goal&gt;().HasRequired(o =&gt; o.GoalBudget).WithMany(o =&gt; o.Goals).HasForeignKey(k =&gt; k.GoalId);
  
          // GOAL TYPE
          modelBuilder.Entity&lt;GoalType&gt;().HasKey(k =&gt; k.GoalTypeId);
          // GOAL BUDGET
          modelBuilder.Entity&lt;GoalBudget&gt;().Property(n =&gt; n.GoalBudgetId).IsRequired();
          modelBuilder.Entity&lt;GoalBudget&gt;().Property(n =&gt; n.GoalBudgetId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
          modelBuilder.Entity&lt;GoalBudget&gt;().Property(n =&gt; n.Created).IsRequired();
          modelBuilder.Entity&lt;GoalBudget&gt;().HasKey(k =&gt; k.GoalBudgetId);
  </code></pre>