J'ai un modèle User
<Country
. Un utilisateur appartient à un pays mais ne peut appartenir à aucun pays (clé étrangère nulle).
Comment puis-je configurer cela? Lorsque j'essaie d'insérer un utilisateur avec un pays nul, il me dit qu'il ne peut pas être nul.
Le modèle est le suivant:
public class User{
public int CountryId { get; set; }
public Country Country { get; set; }
}
public class Country{
public List<User> Users {get; set;}
public int CountryId {get; set;}
}
Erreur: A foreign key value cannot be inserted because a corresponding primary key value does not exist. [ Foreign key constraint name = Country_Users ]"}
Vous devez rendre votre clé étrangère nullable:
public class User
{
public int Id { get; set; }
public int? CountryId { get; set; }
public virtual Country Country { get; set; }
}
Je préfère ceci (ci-dessous):
public class User
{
public int Id { get; set; }
public int? CountryId { get; set; }
[ForeignKey("CountryId")]
public virtual Country Country { get; set; }
}
Parce que EF créait 2 clés étrangères dans la table de la base de données: CountryId et CountryId1, mais le code concernant a corrigé le problème.
J'ai le même problème maintenant, J'ai la clé étrangère et je dois le mettre comme nullable, Pour résoudre ce problème, vous devriez mettre
modelBuilder.Entity<Country>()
.HasMany(c => c.Users)
.WithOptional(c => c.Country)
.HasForeignKey(c => c.CountryId)
.WillCascadeOnDelete(false);
dans la classe DBContext Je suis désolé de vous répondre très tard :)