我应该使用 ObjectBox 提供的链接/反向链接还是 4 个平面文件来建立多对多关系?

问题描述

我已经阅读了多对多关系的对象框文档 https://docs.objectbox.io/relations

还有这个解决方案用于 nosql firebase 中的多对多关系 Many to Many relationship in Firebase

如果我使用 Dart 对象框库对离线数据库的所有 1:N 和 M:N 关系采用第二种方法,会出现什么问题?

为 1:N 关系添加一些代码

class Customer {
  int? id;
}

class Orders {
  int? id;
  int? customerId;
}

所以这里的每个订单都会有一个额外的客户 ID。每当我们需要查找客户的订单时,都会通过查询客户 ID 的订单来实现。

解决方法

所以这里的每个订单都会有一个额外的客户 ID。每当我们需要查找客户的订单时,都会通过查询客户 ID 的订单来实现。

是的,这是有道理的,这就是 ObjectBox ToOne 关系在内部实际工作的方式(它存储一个 ID)。

因此,为了最大限度地方便地使用 ObjectBox,您可以这样定义模型:

@Entity()
class Customer {
  int? id;
}

@Entity()
class Orders {
  int? id;
  final customer = ToOne<Customer>();
}

您当然可以保留普通 ID,但这样您就无法使用查询 .link() 功能建立连接。 Query link() 允许您跨多个实体进行查询,例如,获取符合某些条件的客户的订单(例如,假设您存储了地址,则来自单个城市的客户的所有订单)。