7

我最近用 c 语言使用 sqlite3。谁能告诉我一些方便的 C 的 ORM 吗?是否有必要为我自己的项目开发 ORM 机制?

4

3 回答 3

3

对 ORM 的需求向我表明,您有某种业务/领域对象模型,您想映射到数据库。

如果是这种情况,那么让我感到震惊的是,您正在尝试使用最适合系统编程 (C) 的语言编写业务应用程序。您可能要考虑这是否是一个好的架构策略。

此外,我认为 ORM 不太可能适合以下语言:

  1. 本身不是面向对象的
  2. 对元编程/反射没有太多支持,这往往是许多 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 回答