0

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

还有这个解决方案在 noSQL firebase 中的多对多关系 Firebase 中的多对多关系

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

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

class Customer {
  int? id;
}

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

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

4

1 回答 1

1

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

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

因此,为了最大程度地简化 ObjectBox 的使用,您可以这样定义您的模型:

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

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

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

于 2021-07-28T08:47:35.113 回答