如何在objectBox flutter中连接表

问题描述

在我的Flutter项目中,我使用objectBox数据库做离线模块。在这个模块中,我有三个表Itemmaster表,customerMaster表和customerWiseStock 表。 我有 itemmaster 和 customerMaster 表的数据,我想获得 stock 这取决于 itemId(Itemmaster)salestypeId(CustomerMaster)

如何帮助别人?

这里我附上了图片以供参考。

enter image description here

解决方法

首先,重要的是要承认 ObjectBox 不是关系数据库,并且不能总是应用关系机制。

以下是您通常使用 ObjectBox 处理此问题的方法:

  1. 在实体之间定义 relations(您不需要为 ID 属性建模)
  2. 为主要结果类型定义查询并使用 links 来“加入”查询中的其他类型
  3. 从结果对象中,您可以从“主要类型”对象遍历关系以获取其他类型,从而获取任何属性。

注意:ObjectBox 在创建对象时非常快。因此,遍历相关对象通常不是问题,尤其是在 transaction 中完成时。

,

从单独的“表”中混合“列”不是你可以用 ObjectBox 做的事情。它是静态类型的(并且具有静态模式),这意味着 Dart 对象直接映射到存储在数据库中的数据。您所描述的是您期望从 SQL 数据库获得的内容,具有动态结果(Dart 类型可能类似于 List<Map<String,dynamic>>)。

如果您想使用对象数据库(不限于 ObjectBox),我建议您考虑在有意义的地方对数据进行反规范化。使用 ObjectBox 关系(链接),您应该能够实现相同的目标,但使用更少的类并且仍然以类型安全的方式。

如果您有一些具体的 Dart 代码(“实体”的类)和要查询的数据,我可以提供有关如何清理的建议。