2012-05-14 9 views
6

私は最近c言語でsqlite3を使用しています。誰も私にいくつかの便利なORMを教えてもらえますか? 自分のプロジェクトにORMメカニズムを開発する必要はありますか?C用の便利なORMライブラリフレームワークはありますか?

+2

ORMがC言語でコーディングされている可能性は低いと思われます。 –

+0

Cは一般に頭字語のオブジェクト部分が不足していると考えていますが、どう思いますか? – Justin

+2

私はこれについても疑問に思っています(cからのアクセスを自動化するための何らかのライブラリ)。おそらく構造体をテーブルの行にマップします。なぜdownvoters/closersは説明できますか? –

答えて

2

ORMが必要なことは、データベースにマップするビジネス/ドメインオブジェクトモデルを念頭に置いていることを示唆しています。

この場合、システムプログラミング(C)に最適な言語でビジネスアプリケーションを作成しようとしています。これが良いアーキテクチャー戦略であるかどうかを検討したいかもしれません。

  1. はメタのために多くのサポートを持っていないオブジェクト指向そのものではない:

    さらに、私はORMは、その言語の良いフィットであることが今までにありそうであるとは思いませんプログラミング/リフレクション多くのORMスキームの中心になる傾向がある

最後に、ORMはいずれの場合でもアンチパターンであると信じている人がたくさんいます。あなたはORMは、少なくともある言語/プラットフォームにC

  • スイッチを継続して使用することを計画している場合、完全にORMを避け

  • +0

    ありがとうございます。提案は役に立ちます。私の本来の目的は、DBへのアクセスを繰り返すことを避けることです。私は私のプロジェクトで多くの繰り返しコードを見つけたので。私はそうするためのいくつかの仕組みを書いたが、完全に抽象化するのは難しい。私は最初にORMを見つけることを検討しており、少数しかありません。 –

    0

    簡単なGoogle検索はこの思い付いた:私はそれを使用したことがないので、それはすべてのハードドライブを再フォーマットして、牛乳を台無しにするのに十分な、あなたの冷蔵庫はちょうど暖かい行う場合私を責めないでくださいhttp://ales.jikos.cz/smorm/

    が、あなたが実際にクエリを書こうとしたくない場合は、何よりも良いかもしれないようです。

    +0

    ああそうです。著者はAPIに自信がないようです。 –

    3

    私はthis libraryを「ORM for C」と書いています。

    のコード例は、次のようになります。

    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プログラマが奇数見つけるかもしれないかなりの数のアイデアが含まれています。しかし、それは放棄されていません - 私はまだ問題に興味があり、ある時点でそれについて作業を続けることを望みます。

    関連する問題