web-dev-qa-db-ja.com

エンティティフレームワークのコードファーストNULL外部キー

User <Countryモデルがあります。ユーザーは国に属していますが、どの国にも属していない可能性があります(null外部キー)。

これを設定するにはどうすればよいですか? null国のユーザーを挿入しようとすると、nullにできないことを通知します。

モデルは次のとおりです。

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

94
Shawn Mclean

外部キーをNULL可能にする必要があります。

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

私はこれを好む(以下):

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

EFは、CountryIdとCountryId1という2つの外部キーをデータベーステーブルに作成していましたが、上記のコードはそれを修正しました。

5
user1040323

私は今同じ問題を抱えています、私は外部キーを持っているので、それをnull可能として置く必要があります、この問題を解決するにはあなたが置くべきです

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

dBContextクラスでは、非常に遅く答えてすみません:)

1
Yaman Melhem