wake-up-neo.com

Entity Framework Code-First-Null-Fremdschlüssel

Ich habe ein User <Country Modell. Ein Benutzer gehört einem Land an, darf aber keinem (null Fremdschlüssel) angehören.

Wie richte ich das ein? Wenn ich versuche, einen Benutzer mit einem Nullland einzufügen, wird mir mitgeteilt, dass es nicht null sein kann.

Das Modell ist wie folgt:

 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;}
}

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

Sie müssen Ihren Fremdschlüssel für null freigeben lassen:

public class User
{
    public int Id { get; set; }
    public int? CountryId { get; set; }
    public virtual Country Country { get; set; }
}
135
Ladislav Mrnka

Ich bevorzuge das (unten):

public class User
{
    public int Id { get; set; }
    public int? CountryId { get; set; }
    [ForeignKey("CountryId")]
    public virtual Country Country { get; set; }
}

Weil EF in der Datenbanktabelle 2 Fremdschlüssel erstellt hat: CountryId und CountryId1, aber der Code über das Problem wurde behoben.

1
user1040323

Ich habe jetzt dasselbe Problem, Ich habe einen Fremdschlüssel, und ich muss ihn als nullbar setzen, Dieses Problem sollte gelöst werden 

    modelBuilder.Entity<Country>()
        .HasMany(c => c.Users)
        .WithOptional(c => c.Country)
        .HasForeignKey(c => c.CountryId)
        .WillCascadeOnDelete(false);

in der DBContext-Klasse Es tut mir leid, dass ich Ihnen sehr spät antworten musste :)

0
Yaman Melhem