one-to-one relation avec la propriété FK explicite (comme votre PayGroup.SupervisorId ) n'est pas pris en charge.
Supprimez donc cette propriété du modèle :
public class PayGroup
{
public int Id { get; set; }
public virtual Employee Supervisor { get; set; }
}
et utilisez le mappage fluide suivant :
modelBuilder.Entity<PayGroup>()
.HasRequired(e => e.Supervisor)
.WithOptional()
.Map(m => m.MapKey("SupervisorId"));
Le WithOptional() call spécifie deux choses. D'abord qu'il n'y a pas de propriété de navigation inverse dans Employee class, et deuxièmement que le FK est facultatif (Allow Nulls = true dans le tableau).
Si vous décidez d'ajouter une propriété de navigation inverse
public class Employee
{
public string EmployeeId { get; set; }
public string FullName { get; set; }
public virtual PayGroup PayGroup { get; set; } // <=
}
changez-le en WithOptional(e => e.PayGroup) .
Si vous voulez le rendre obligatoire (Allow Nulls = false dans le tableau), puis utilisez le WithRequiredDependent correspondant surcharge (Dépendant signifie ici que le Employee sera le principal et PayGroup sera le dépendant ).