Eins-zu-eins-Beziehung mit der Entity Framework Fluent API

Ich habe Probleme mit der Rückwärtsnavigation auf einer meiner Einheiten.

Ich habe die folgenden zwei Objekte:

public class Candidate
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long CandidateId { get; set; } 
    ....

    // Reverse navigation
    public virtual CandidateData Data { get; set; }
    ...

    // Foreign keys
    ....
}

public class CandidateData
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long CandidateDataId { get; set; }

    [Required]
    public long CandidateId { get; set; }

    // Foreign keys
    [ForeignKey("CandidateId")]
    public virtual Candidate Candidate { get; set; }
}

Jetzt funktioniert meine Fremdschlüsselnavigation für das CandidateData-Objekt einwandfrei. Ich habe Probleme, die Rückwärtsnavigation für das Kandidatenobjekt zum Funktionieren zu bringen (falls dies überhaupt möglich ist).

Dies ist meine OnModelCreating-Funktion:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

    modelBuilder.Entity<Candidate>()
        .HasOptional(obj => obj.Data)
        .WithOptionalPrincipal();

    base.OnModelCreating(modelBuilder);
}

Es funktioniert fast, außer in der Datenbank werden zwei Spalten angezeigt, die auf die CandidateId verweisen. Ich erhalte die, die ich vom POCO-Objekt erhalte, die andere Spalte Candidate_CandidateId, von der ich annehme, dass sie vom modelBuilder erstellt wurde.

Ich bin im Moment ziemlich verloren. Kann jemand bitte etwas Licht auf das werfen, was los ist?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage