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 字符串是否更有意义。
===关于马库斯的回答的更新===
我通常使用 3 个数据模型层:域、数据传输、数据源。数据传输层提供其他 2 之间的中间方法。
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();