2012-05-14 13 views
6

Io uso sqlite3 con il linguaggio c recentemente. Qualcuno può dirmi qualche ORM conveniente per c? È necessario sviluppare un meccanismo ORM per i miei progetti?Esiste qualche utile framework di libreria ORM per c?

+2

Sembra che chiunque desideri che un ORM sia improbabile codificante in C .. –

+0

Che cosa hai in mente dato che C in genere manca la parte Object di quell'acronimo? – Justin

+2

mi sono interrogato anche su questo (una specie di libreria per automatizzare l'accesso da c); probabilmente mapperebbe una struttura in una riga in una tabella. per favore, i downvoters/closers spiegano perché? –

risposta

2

Avere bisogno di ORM mi suggerisce di avere una specie di modello di business/dominio in mente che si desidera mappare su un database.

In tal caso, mi sembra che si stia tentando di scrivere un'applicazione aziendale in una lingua più adatta alla programmazione dei sistemi (C). Potresti voler valutare se questa è una buona strategia architettonica.

Inoltre, non credo che ORM è mai probabile che sia una buona misura per un linguaggio che:

  1. non è di per sé orientata agli oggetti
  2. non ha molto supporto per meta- riflessione programmazione/che tende ad essere al centro di molti schemi ORM

Infine, ci sono un sacco di persone che credono che ORM è un anti-modello, in ogni caso. (example, example, example)

complesso, il mio suggerimento sarebbe quello di uno:

  • Evitare ORM del tutto, se si ha intenzione di continuare a utilizzare C
  • Passa a un linguaggio/piattaforma dove ORM è almeno ben supportato e adatto al paradigma (ovviamente Java)
+0

Grazie mille. I suggerimenti sono utili. La mia intenzione originale è di evitare manipolazioni ripetute per accedere al DB. Perché ho trovato molti codici di ripetizione nel mio progetto.Ho scritto un meccanismo per farlo, ma è così difficile da astrarre completamente. Considero di trovare prima l'ORM, e ce ne sono pochi. –

0

Una breve ricerca su google arrivato fino a questo: http://ales.jikos.cz/smorm/

ho mai usato, quindi non prendetevela con me se riformatta tutti i dischi rigidi e rende il vostro frigorifero appena abbastanza caldo per rovinare il vostro latte, ma sembra che potrebbe essere meglio di niente se davvero non vuoi scrivere query.

+0

oh sì. sembra che gli autori non abbiano fiducia nelle sue API .. –

3

ho scritto this library come "ORM per C".

codice di esempio si presenta come:

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 
} 

purtroppo, non è in uso da nessuna parte (per quanto ne so) e comprende un paio di idee piuttosto che condito programmatori C potrebbero trovare strano. ma non è abbandonato - sono ancora interessato al problema e spero di continuare a lavorarci su ad un certo punto.

Problemi correlati