【发布时间】: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