Код структуры сущности - первый нулевой внешний ключ - PullRequest
91 голосов
/ 14 апреля 2011

У меня есть модель User <<code>Country. Пользователь принадлежит стране, но не может принадлежать ни одной (нулевой внешний ключ).

Как мне это настроить? Когда я пытаюсь вставить пользователя с нулевой страной, он говорит, что он не может быть нулевым.

Модель выглядит следующим образом:

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

Ошибка: A foreign key value cannot be inserted because a corresponding primary key value does not exist. [ Foreign key constraint name = Country_Users ]"}

Ответы [ 3 ]

138 голосов
/ 14 апреля 2011

Вы должны сделать свой внешний ключ обнуляемым:

public class User
{
    public int Id { get; set; }
    public int? CountryId { get; set; }
    public virtual Country Country { get; set; }
}
4 голосов
/ 17 сентября 2018

Я предпочитаю это (ниже):

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

Поскольку EF создавал 2 внешних ключа в таблице базы данных: CountryId и CountryId1, но код выше исправил это.

0 голосов
/ 17 июля 2018

У меня сейчас такая же проблема, У меня есть внешний ключ Чтобы решить эту проблему, вы должны поставить

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

в классе DBContext Прошу прощения за ответ очень поздно :) 1004 *

...