我目前正在开发一个以简单层次结构存储数据的应用程序。该模型与此类似(以类似 C# 的语法表示):
class Box {
int Id { get; set; }
}
class Gadget {
int Id { get; set; }
int ParentBox { get; set; }
}
所以,我有几千个盒子,我有零个或多个属于一个盒子的小工具。为了访问数据,我创建了一个小型 REST API,它允许我查询所有框或其中的一个子集。通过 API 的响应是一个数据传输对象,其中包含属于该框的所有小工具。一个典型的 JSON 答案是:
{ "Boxes": [
{ "Id: 1,
"Gadgets": [
{ "Id": 100 }
{ "Id": 101 }
]
},
{ "Id: 2,
"Gadgets": [
{ "Id": 200 }
{ "Id": 201 }
]
}
}
不幸的是,结果证明性能很糟糕。获取数据的逻辑是(同样,在类似 C# 的语法中):
var boxes = Db.Select<Boxes>();
foreach (var box in boxes) {
var boxDto = new BoxDto();
boxDto.Gadgets = ConvertToDto(Db.Select<Gadget>().Where(q => q.Box == box.Id));
}
我知道我的解决方案很幼稚。我有几万个盒子,每个盒子里都有几十个小工具。我的问题是:
- 是否有有效管理此类关系的模式?我不是第一个遇到这个问题的人,但我在网上找不到任何东西。
- 我应该更改数据模型吗?如果是这样,怎么做?
任何想法/反馈将不胜感激。