0

在我的颤振项目中,我正在使用objectBox 数据库进行离线模块。在这个模块中,我有三个表ItemMaster表、customerMaster表和customerWiseStock表。我有 itemMaster 和 customerMaster 表的数据,我想获取库存,这取决于itemId(ItemMaster)salestypeId(CustomerMaster)

如何帮助别人?

在这里我附上图片以供参考。 在此处输入图像描述

4

2 回答 2

1

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

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

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

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

于 2021-07-21T15:43:31.793 回答
0

使用 ObjectBox 无法将不同“表”中的“列”混合在一起。它是静态类型的(并且具有静态模式),这意味着 Dart 对象直接映射到存储在数据库中的数据。您所描述的是您对 SQL 数据库的期望,具有动态结果(Dart 类型可能类似于List<Map<String, dynamic>>)。

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

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

于 2021-07-20T10:08:23.430 回答