나는이 User
< Country
모델. 사용자는 국가에 속하지만 어느 국가에도 속하지 않을 수 있습니다 (널 외래 키).
어떻게 설정합니까? 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 ]"}
답변
외래 키를 nullable로 만들어야합니다.
public class User
{
public int Id { get; set; }
public int? CountryId { get; set; }
public virtual Country Country { get; set; }
}
답변
나는 이것을 선호한다 (아래) :
public class User
{
public int Id { get; set; }
public int? CountryId { get; set; }
[ForeignKey("CountryId")]
public virtual Country Country { get; set; }
}
EF가 데이터베이스 테이블에 CountryId 및 CountryId1이라는 두 개의 외래 키를 만들었 기 때문에 위의 코드는이를 수정했습니다.
답변
나는 지금 같은 문제가 있고, 외래 키가 있고 그것을 nullable로 넣어야합니다.이 문제를 해결하려면 넣어야합니다.
modelBuilder.Entity<Country>()
.HasMany(c => c.Users)
.WithOptional(c => c.Country)
.HasForeignKey(c => c.CountryId)
.WillCascadeOnDelete(false);
DBContext 클래스에서 매우 늦게 답변을 드려 죄송합니다. 🙂
답변
이 그림과 같이 EF Code First의 관계, 탐색 속성 및 외래 키 사용에 대한 Microsoft 가이드를 읽는 것이 좋습니다 .
아래 가이드 링크 :
https://docs.microsoft.com/en-gb/ef/ef6/fundamentals/relationships?redirectedfrom=MSDN