我最近用 c 语言使用 sqlite3。谁能告诉我一些方便的 C 的 ORM 吗?是否有必要为我自己的项目开发 ORM 机制?
问问题
6463 次
3 回答
3
对 ORM 的需求向我表明,您有某种业务/领域对象模型,您想映射到数据库。
如果是这种情况,那么让我感到震惊的是,您正在尝试使用最适合系统编程 (C) 的语言编写业务应用程序。您可能要考虑这是否是一个好的架构策略。
此外,我认为 ORM 不太可能适合以下语言:
- 本身不是面向对象的
- 对元编程/反射没有太多支持,这往往是许多 ORM 方案的核心
最后,有很多人认为 ORM 在任何情况下都是一种反模式。(例子,例子,例子)
总的来说,我的建议是:
- 如果您打算继续使用 C,请完全避免使用 ORM
- 切换到 ORM 至少得到很好支持并符合范式的语言/平台(最明显的是 Java)
于 2012-05-14T05:38:51.877 回答
2
我把这个库写成“C 的 ORM”。
示例代码如下所示:
typedef struct person {
int id;
char *name;
} person;
void find_by_name(isti_db *db, const char *text, person** result) {
corm_person_select *s;
corm_person_select_alloc(&s, db);
s->name(s, "like", text)->_go_one(s, result); // populate result from the database
s->_free(s, 0); // in "real" code, 0 is a chained status value
}
不幸的是,它并没有在任何地方使用(据我所知),它包含了很多经验丰富的 c 程序员可能会觉得奇怪的想法。但它并没有被放弃——我仍然对这个问题感兴趣,并希望在某个时候继续研究它。
于 2014-03-26T18:58:18.093 回答
0
一个简短的谷歌搜索想出了这个:http ://ales.jikos.cz/smorm/
我从来没有用过,所以不要怪我,如果它重新格式化你所有的硬盘驱动器,让你的冰箱温暖到足以破坏你的牛奶,但如果你真的不想写,看起来总比没有好查询。
于 2012-05-14T05:12:58.770 回答