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 ).