EF5 eins zu eins ohne Navigation

Ich versuche eine Eins-zu-Eins-Beziehung mit der Navigationseigenschaft nur auf einer Seite (MVC4, EF5, Code zuerst).

public class User {

  public int UserId { get; set; } //PK

  public int RankId { get; set; } //FK

  public virtual Rank { get; set; } //Navigation

}

public class Rank {

  public int RankId { get; set; }

}

Aufbau:

 public class RankConfiguration : EntityTypeConfiguration<Rank>
{
    public RankConfiguration()
    {
      HasKey(e => e.RankId);
      Property(e => e.RankId)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    }
}

public class UserConfiguration : EntityTypeConfiguration<User>
{
    public UserConfiguration ()
    {
      // PK
      HasKey(e => e.UserId);

      Property(e => e.RankId)
        .IsRequired();

      HasRequired(e => e.Rank)
        .WithRequiredDependent()
        .WillCascadeOnDelete(true);
    }
}

Für das, was ich sehe (und für das Wenige, das ich weiß), ist die Datenbank korrekt generiert, aber ich erhalte diesen Fehler:

Eine abhängige Eigenschaft in einer ReferentialConstraint wird einer vom Speicher generierten Spalte zugeordnet. Spalte: 'UserId'.

In einem ersten Versuch habe ich darüber nachgedacht, eine Verknüpfungstabelle zu erstellen (siehe hier)EF5 Fluent API eins zu eins ohne Navigator), weiß nicht, ob das eine gute Idee war, aber ich konnte es nicht mit flüssiger API machen.

Ich habe keine Ahnung warum und was falsch ist .. irgendeine Hilfe? Vielen Dank im Voraus

AKTUALISIEREN

Erster Versuch Nach dem@soadyp Kommentar, ich habe versucht, eine Eins-zu-Eins mit einer Join-Tabelle zu konfigurieren

HasRequired(e => e.Rank)
    .WithRequiredDependent()
    .Map(m =>
    {
      m.ToTable("UserRank");
      m.MapKey("RankId");
    })
    .WillCascadeOnDelete(true);

aber ich bekomme diesen Fehler, wenn ich versuche zu migrieren:

The specified table 'UserRank' was not found in the model. 
Ensure that the table name has been correctly specified.

Zweiter Versuch Wahrscheinlich mache ich einen einfachen Job zu kompliziert, nachdem ich ihn gelesen habehttp://weblogs.asp.net/manavi/archive/2011/04/14/associations-in-ef-4-1-code-first-part-3-shared-primary-key-associations.aspx Ich habe mich nur so verändert

  HasRequired(e => e.Rank)
    .WithOptional()
    .WillCascadeOnDelete(true);

Alles ist in Ordnung, ABER die UserId PK wurde nicht als Identität festgelegt (mit offensichtlichen Problemen beim Einfügen einer Zeile). Wenn ich es als Identität spezifiziere:

  Property(e => e.UserId)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

Ich erhalte folgenden Fehler:

Cascading foreign key 'FK_dbo.Users_dbo.Ranks_UserId' cannot be created where 
the referencing column 'Users.UserID' is an identity column.
Could not create constraint. See previous errors.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage