Uno a cero o uno con HasForeignKey

Tengo dos modelos:

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");
    }
}

Quiero mapearlos usando mapeo fluido. La tabla de empleados tiene la columna 'person_id' que no es anulable. Traté de seguir:

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

Pero falla con:

System.Data.Entity.ModelConfiguration.ModelValidationException: Se detectaron uno o más errores de validación durante la generación del modelo:

person_id: Nombre: Cada nombre de propiedad en un tipo debe ser único. El nombre de la propiedad 'person_id' ya está definido.

Necesito la propiedad de PersonId por sí misma, así que lo que básicamente quiero es:

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

Perono hay tal método aquí como HasForeignKey

Respuestas a la pregunta(2)

Su respuesta a la pregunta