【发布时间】:2025-11-24 20:25:08
【问题描述】:
我这里有个奇怪的问题。
在我的数据库中,我有一个名为“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 确实找到了这个邻居,但现在它找不到第一个关联的源国家。 我好像无法连接来源国和邻国。
你知道可能是什么问题吗?
非常感谢!
【问题讨论】:
标签: c# asp.net-mvc linq entity-framework ef-code-first