Objectbox go:删除模型类



不幸的是,ObjectBox Go的文档没有提供关于删除整个类型结构的信息"通电的";通过ObjectBox。

假设我们有一个结构

//go:generate go run github.com/objectbox/objectbox-go/cmd/objectbox-gogen
type Test struct {
Id            uint64
Name          string
}

过了一段时间,我决定从项目中删除整个测试(删除Test.go和Test.obx.go(;记得";这个幻影类,并不断将其添加到objectbox-model.go 中

model.RegisterBinding(TestBinding)

如何安全地删除此结构(及其数据(?

当前,ObjectBox代码生成器不会删除实体,因为它处理部分输入信息(一次处理一个文件(,因此它不知道您是否删除了实体,或者它将在调用生成器的下一个文件中。

我在GH上创建了一个后续问题/功能请求:https://github.com/objectbox/objectbox-generator/issues/22

如果您真的需要立即删除实体,直到将删除功能添加到生成器中:当前的解决方法是手动更新objectbox-model.json,删除定义它的实体JSON代码块,并将其uid添加到retiredEntityUids列表中,以避免重复使用相同的UID(这会破坏一切(。此外,对于已删除的属性、索引和关系(每个都有其retired*Uids列表(,也必须执行同样的操作。生成器重新运行后,实体将从objectbox-model.go中删除。

我不建议这样做,因为手动编辑模型JSON文件时很容易出错,可能会导致数据丢失如果可以,请等待生成器支持删除。

最新更新