one-to-one relazione con la proprietà FK esplicita (come il tuo PayGroup.SupervisorId ) non è supportato.
Quindi rimuovi quella proprietà dal modello:
public class PayGroup
{
public int Id { get; set; }
public virtual Employee Supervisor { get; set; }
}
e usa la seguente mappatura fluente:
modelBuilder.Entity<PayGroup>()
.HasRequired(e => e.Supervisor)
.WithOptional()
.Map(m => m.MapKey("SupervisorId"));
Il WithOptional() call specifica due cose. Innanzitutto che non esiste una proprietà di navigazione inversa in Employee class e secondo che l'FK è opzionale (Allow Nulls = true nella tabella).
Se decidi di aggiungere la proprietà di navigazione inversa
public class Employee
{
public string EmployeeId { get; set; }
public string FullName { get; set; }
public virtual PayGroup PayGroup { get; set; } // <=
}
cambialo in WithOptional(e => e.PayGroup) .
Se vuoi renderlo obbligatorio (Allow Nulls = false nella tabella), quindi utilizzare il corrispondente WithRequiredDependent sovraccarico (Dipendente qui significa che il Employee sarà il preside e PayGroup sarà il dipendente ).