join
하나의 모델만을 다루는 적절한 테이블 을 만들려고 노력하고 있는데 , 나중에 사용할 계획 인이 테이블에 대해 CRUD 페이지를 설정할 계획이므로 원래 모델의 일부가 될 수 없다고 생각합니다.
public class Person
{
[Key]
public int PersonID { get; set;}
public string Firstname { get; set;}
public string LastName { get; set;}
public string Birthday { get; set;}
}
이제 나는 사람들, 그들의 가장 친한 친구 및 가장 친한 친구의 생일이 무엇인지 추적하고 싶습니다.
public class Friends
{
[Key]
public int FriendshipID {get; set;}
[ForeignKey("Person")]
public Person SelectedPerson {get; set;}
public int SelectedPersonID {get; set;}
[ForeignKey("Person")]
public Person Friend {get; set;}
public int FriendID {get; set;}
}
이것에 대한 몇 가지 문제가 있습니다. 하나는 어떻게 [ForeignKey("xxxx")]
작동 하는지 완전히 알지 못하지만 이것은 오류를 일으키는 것 같습니다. 한 사람이 여러 명의 가장 친한 친구를 가질 수 있으므로 가장 친한 친구 SelectedPerson
를 모두 얻으려면 친구 테이블에 같은 항목이 많이 있어야합니다. 한 번에 단 하나의 친구가 아닌 친구 목록이 유리하지만 일종의 계단식 삭제 오류를 유발하는 것 같습니다.
stackoverflow에 이와 유사한 질문이 있다는 것을 알고 있지만 동일한 테이블에 다시 조인하는 위치를 찾을 수 없습니다. 현재 EF가 동일한 이름의 외래 키를 처리 할 수 없기 때문에 ForeignKeys를 주석 처리했습니다.
어떤 도움이나 제안이라도 대단히 감사합니다. 시간 내 주셔서 감사합니다.
InverseProperty
여러 관계를 정의 하려면 in parent 클래스를 사용해야합니다 .
와 하지 에 대한 중복 된 이름을 사용ForeignKey
public class Person
{
[Key]
public int PersonID { get; set;}
public string Firstname { get; set;}
public string LastName { get; set;}
public string Birthday { get; set;}
[InverseProperty("SelectedPerson")]
public ICollection<Friends> SelectedPerson { get; set; }
[InverseProperty("Friend")]
public ICollection<Friends> SelectedFriends { get; set; }
}
그런 다음 Friends
클래스를 다음으로 변경하십시오.
public class Friends
{
[Key]
public int FriendshipID {get; set;}
[ForeignKey("SelectedPersonID")]
public Person SelectedPerson {get; set;}
public int SelectedPersonID {get; set;}
[ForeignKey("FriendID")]
public Person Friend {get; set;}
public int FriendID {get; set;}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다