写了个小例子,全面地感受了下ODB(1.7.0版)。总体来说还是不错,不过应用到实际的项目中,问题还是比较大。

首先是不支持联合主键,而且没有CHECK约束、UNIQUE约束,这是官方都承认的。

虽然提供了延迟加载(lazyload)来改善效率,不过使用起来不方便

查询不灵活,只能在WHERE之后的部分设定查询条件,像查询存在(SELECT EXISTS)、查询数量(SELECT COUNT)都必须定义一个视图来实现,实在麻烦

批量删除比较慢,而且不灵活。高级一点只提供了按查询条件删除,但是这是远远不够的,虽然开放了执行SQL的接口,但是这样就破坏了ORM工具设计的初衷,也为以后维护带来了麻烦。

有触发器对应的功能(即软件实现),提供了callback(回调),支持触发器常用的事件,删除前后、新增前后等。不过我尝试添加一个删除触发另外一个表的数据删除编译失败了,不知为何

没有存储过程、游标对应的软件实现

 

下面是附件源码的运行结果:

附件下载:

http://dl.dbank.com/c07l5w5k7x

(需要去官网下载ODB编译并加入到VC目录下,推荐使用VS2008SP1以上版本的IDE,或者使用boost库,因为需要用到智能指针)