我已经在互联网上搜索了一个表来支持树数据或层次结构数据,但是似乎并没有提供太多信息。
比方说,我想拥有一个位置表,该表可以在其他位置数据存在父项的情况下自引用。
如何在ef-core中实现以下查询?
- 位置A
- 位置B
- 位置C
- 位置D
- 位置E
- 位置J
- 位置F
- 位置K
- 位置L
- 位置M
这是我的位置模型...
public class Location
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string Address { get; set; }
public NpgsqlTsVector SearchVector { get; set; }
}
请帮助或提供任何建议资源来开始。我是dotnet核心和实体框架的新手。
谢谢。
答案 0 :(得分:0)
您想要的实体似乎是这样的:
public class Location
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string Address { get; set; }
public NpgsqlTsVector SearchVector { get; set; }
public int? ParentId { get; set; }
public Location Parent { get; set; }
}
?
的{{1}}是因为您的根没有任何父母。因此,根(或可能的根)是不包含任何ParentId
的根,树的其他部分也可以通过其ParentId
来确定。
关于第二个问题,如果要读取具有层次结构的数据,则还需要向该实体添加另一个属性:
ParentIds
具有以下配置:
public virtual List<Location> Children { get; set; }
因此,对于上述实体,只需执行db.Location.toList();。您将获得所需的输出。