问题描述
我已经阅读了多对多关系的对象框文档 https://docs.objectbox.io/relations
还有这个解决方案用于 nosql firebase 中的多对多关系 Many to Many relationship in Firebase
如果我使用 Dart 对象框库对离线数据库的所有 1:N 和 M: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()
允许您跨多个实体进行查询,例如,获取符合某些条件的客户的订单(例如,假设您存储了地址,则来自单个城市的客户的所有订单)。