web-dev-qa-db-fra.com

Clé étrangère nulle du code de la première entité du cadre d'entité

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 ]"}

85
Shawn Mclean

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; }
}
135
Ladislav Mrnka

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.

1
user1040323

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

0
Yaman Melhem