one-to-one relacionamento com a propriedade FK explícita (como seu PayGroup.SupervisorId ) não é suportado. Portanto, remova essa propriedade do modelo:
public class PayGroup
{
public int Id { get; set; }
public virtual Employee Supervisor { get; set; }
}
e use o seguinte mapeamento fluente:
modelBuilder.Entity<PayGroup>()
.HasRequired(e => e.Supervisor)
.WithOptional()
.Map(m => m.MapKey("SupervisorId"));
O
WithOptional() call especifica duas coisas. Primeiro que não há propriedade de navegação inversa em Employee class, e segundo que o FK é opcional (Allow Nulls = true na mesa). Se você decidir adicionar a propriedade de navegação inversa
public class Employee
{
public string EmployeeId { get; set; }
public string FullName { get; set; }
public virtual PayGroup PayGroup { get; set; } // <=
}
altere para
WithOptional(e => e.PayGroup) . Se você quiser torná-lo obrigatório (
Allow Nulls = false na tabela), então use o WithRequiredDependent correspondente sobrecarga (Dependente aqui significa que o Employee será o diretor e PayGroup será o dependente ).