渴望加载无限层次关系



我有模型Location的关系,它有ParentLocation引用自己的模型,另一个Location。

示例:位置是德国,ParentLocation of Germany是欧洲(另一个位置(。

也存在非常局部的位置,它们处于5个或更多级别的层次结构中,如:城镇->岛->群岛->状态->大陆当装载地点在城镇时,我也希望能进入大陆。经典方法是:

dataContext.Locations.Where(x => x.LocationId = id).Include(x => x.ParentLocation).ThenInclude(x => ParentLocation).... (always return one Location)

但我永远不知道ParentLocation有多少级别。有什么方法可以处理它吗?谢谢

AFAIK EF Core开箱即用不支持此功能。所以你有下一个选择

  • 检查您的数据库是否支持递归查询,然后在EF Core中编写一个并通过原始sql查询调用它,或者寻找一些支持递归查询的第三方工具(如旧EF 6的此工具(
  • 在循环中手动加载层次结构的每一层(对于嵌套层次结构不太好,即使"足够好"也最好添加一些缓存(
  • 如果位置数量足够少,只需使用dataContext.Locations.ToList()将所有内容加载到内存中(添加一些缓存,这样就不需要每次都执行此请求(

最新更新