如何使用DBAccess iOS ORM删除表

时间:2015-09-21 09:21:58

标签: ios orm dbaccess

我们计划在我们的iOS应用中使用DBAccess。我们无法找到一种在应用运行时放弃桌面的方法。

我们的实际用例是弄清楚DB何时更新,然后删除或更改某些表。 DBAccess似乎也没有给db版本号。

1 个答案:

答案 0 :(得分:1)

这个问题有点令人费解,但这里有:

我们如何使用DBAccess实际删除表?

答案非常简短,你不能直接。为了进一步解释这一点,我们过去删除了所有不是从DBObject类派生的表。这引起了我们发现的用户之间的愤怒和仇恨,他们正在使用DBAccess,但是对于现有数据库或预先填充的文件,一些表没有用作类,而是用于子查询等。所以我们删除了这个功能,似乎至少有50/50的意见分歧。

如果您愿意,可以发出SQL命令直接删除未使用的表,只需添加此类别并填充您的引导,只需为数据库名称传递nil。

@interface DBAccess (execSQL)

+(void)executeSQL:(NSString*)sql inDatabase:(NSString*)dbName;

@end

然而,点1和2都是由下一个“特征”处理的。我们在DBAccess中内置了一个修订系统,以实现迁移和升级。它一直是隐藏的,因为它使用起来相当费力,我们正在计划一个更好的基于GUI的编辑器,以供将来使用。但是可以添加到对象的两个方法调用如下:

+ (void)setRevision:(int)revision 
+ (void)entityAtRevision:(int)revision

您的实体将使用对象的当前版本在entityAtRevision:上调用,然后您可以使用executeSQL:方法更改现有数据。重要的是,在添加新的/重命名的列但在删除原始列之前调用此方法,以便现有数据准备就绪。但是,在退出该方法之前,您必须使用新版本号调用setRevision:

正如我所说,这还没有发布,因为我们想要开发一个更优秀的实现(即使基础模型保持不变),因为这是该框架的一个明显的弱点。

希望这有帮助, 阿德里安