여기에 이상한 문제가 있습니다.EF6의 LINQ : 두 개의 열 테이블에서 두 번째 참조가 손실됩니다.
내 데이터베이스에는 "NeighbourCountry"라는 테이블이 있습니다. 원본 국가와 관련 이웃 국가로 구성됩니다.
public class NeighbourCountry
{
[Key]
public int NeighbourCountryID { get; set; }
public Country Source { get; set; }
public Country Neighbour { get; set; }
}
그것은이 패턴처럼 작성된다 : 난 그냥 간단한 방법으로 한 나라의 이웃을 얻고 싶었다 이제
source_a,neighbour_x
source_a,neighbour_u
source_a,neighbour_t
source_b,neighbour_n
source b,neighbour_p
: (쉽게 디버깅, 난 그냥 단지를 얻으려고 국가의
FIRST 이웃)
private string GetNeighbours(ApplicationDbContext context, Country paracountry)
{
var neighbours = context.NeighbourCountries.Where(b => b.Source.CountryID == paracountry.CountryID).FirstOrDefault();
return "";
}
그리고 지금은 "이웃"위에 마우스를 올려 때,이 얻을 :,
보시다시피 원본 국가는 있지만 이웃이 없다고 말합니다. 정확하지 이 데이터베이스는이 데이터로 가득 :
이 경우의 소스 국가 데이터베이스에서 ID 1 와 나라, ID 1 나라 올바르게 나열된 그 이웃과.
다른 방법으로 시도해 보았을 때 원본 대신 이웃 사람에게 직접 LINQing하면 동일한 시나리오를 얻었습니다. 내가 말했듯이
var neighbours = context.NeighbourCountries.Where(b => b.Neighbour.CountryID == paracountry.CountryID).FirstOrDefault();
, 나는이 얻을 :
그래서 Linq에이 이웃을 찾을 수 없지만, 지금은 첫 번째 관련된 소스 국가를 찾을 수 없습니다. 소스 국가 및 이웃 나라를 연결할 수없는 것 같습니다.
문제의 원인을 알고 있습니까?
정말 고마워요!
문제가 해결되었습니다. 정말 고마워요! 나는 여기서 무슨 일이 일어나고 있는지, 왜 이것이 작동하는지 이해하지 못하지만 감사합니다. D – Tornister
"게으름로드"와 "열망하는로드"에 대해 goole 시도를하면 도움이 될 것입니다.) –