【问题标题】:is it possible/worth to deeply nest data in ObjectBox?是否有可能/值得在 ObjectBox 中深度嵌套数据?
【发布时间】:2021-08-24 15:58:27
【问题描述】:

ObjectBox 文档描述了创建 1:1 和 1:n 关系。但是创建 1:n:m 关系是否可能和可行?所以我会有一个像

这样的域数据模型
class ClassA {
  List<ClassB> myClassB;
}
class ClassB {
  List<ClassC> myClassC;
}
class ClassC {
  List<ClassD> myClassD;
}
class ClassD {
  int x;
}

并且希望使用 myClassB.toObjectBox()ClassB.fromObjectBox(OboxEntity) 方法来回转换它。

我不确定是否可以轻松地将 1:n 方法扩展到更进一步的嵌套层,并且通常将嵌套数据存储为 JSON 字符串是否更有意义。

=== 更新关于 Markus 的回答 ===

我通常使用 3 个数据模型层:域、数据传输、数据源。数据传输层提供其他两个之间的中间方法。

enum myEnum {left, right};

@Entity
class MyDataOboxEntity {
 int id;
 int enum;
 MyDataOboxEntity({this.id, this.enum});
}

class MyDataDtoEntity {
 int id;
 int enum; 
 MyDataDtoEntity({this.id, this.enum});
 
 factory MyDataDtoEntity.fromObjectBox(MyDataOboxEntity entity) {
    return MyDataDtoEntity(
      id: entity.id,
      enum: MyEnum[entity.enum],
  }
 
 MyDataOboxEntity toObjectBox() {
    return MyDataOboxEntity(
      id: id,
      enum: enum,
 }
 
 MyDataEntity toDomain() {
    return MyDataEntity(
      id: id,
      enum: myEnum.values[enum],
    );
}

class MyDataEntity {
 int id;
 MyEnum enum; 
 MyDataDtoEntity({this.id, this.enum});
}

然后为了获得一个值,我将调用存储库中的数据类 myData = MyDataDtoEntity.fromObjectBox(getDataFromObjectBox(id: id)).toDomain();

【问题讨论】:

    标签: objectbox flutter-objectbox


    【解决方案1】:

    在实体类之间有多个relations 非常好。 ObjectBox 是一个可以非常高效地查找不同类型对象的数据库。

    想用 myClassB.toObjectBox() 和 ClassB.fromObjectBox(OboxEntity) 方法来回转换它。

    这是我不太清楚的部分。也许你想澄清一下?

    【讨论】:

    • 感谢您的回复。我现在已经解释了更新我的问题的方法
    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    相关资源
    最近更新 更多