Eins zu Null oder Eins mit HasForeignKey

Ich habe zwei Modelle:

public class Person
{
    public virtual int Id { get; set; }
    public virtual Employee Employee { get; set; } // optional
}

public class Employee
{
    public virtual int Id { get; set; }
    public virtual int PersonId { get; set; }

    public virtual Person Person {get; set; } // required
}

public class EmployeeConfiguration : EntityTypeConfiguration<Employee>
{
    public EmployeeConfiguration()
    {
        Property(e=>e.PersonId) // I need this property mapped
            .HasColumnName("person_id")
            .HasColumnType("int");
    }
}

Ich möchte sie mit flüssigem Mapping abbilden. Die Mitarbeitertabelle enthält die Spalte 'person_id', die nicht nullwertfähig ist. Ich habe folgendes versucht:

HasRequired(e => e.Person)
    .WithOptional(p => p.Employee)
    .Map(m => m.MapKey("person_id"));

Aber es schlägt fehl mit:

System.Data.Entity.ModelConfiguration.ModelValidationException: Mindestens ein Validierungsfehler wurde während der Modellgenerierung festgestellt:

person_id: Name: Jeder Eigenschaftsname in einem Typ muss eindeutig sein. Der Eigenschaftsname 'person_id' ist bereits definiert.

Ich benötige die PersonId-Eigenschaft für sich. Ich möchte also im Grunde Folgendes:

HasRequired(e => e.Person)
    .WithOptional(p => p.Employee)
    .HasForeignKey(e => e.PersonId); // there is no such method

Aberes gibt keine solche Methode hier als HasForeignKey

Antworten auf die Frage(2)

Ihre Antwort auf die Frage